2017-06-05 9 views

答えて

0

独自のサインインアダプタを実装する場合は、アイデンティティプロバイダからユーザープロファイルを取得するオプションがあり、これを使用して電子メールアドレスを検証できます。ここに返される文字列はリダイレクト先のURLを表しています。したがって、電子メールアドレスがドメインと一致しない場合、エラーページにそれらをリダイレクトすることができます。

@Component 
public class SocialSignInAdapter implements SignInAdapter { 

    private final UserDetailsTransformer userDetailsTransformer; 

    @Autowired 
    public SocialSignInAdapter(UserDetailsTransformer userDetailsTransformer) { 
     this.userDetailsTransformer = userDetailsTransformer; 
    } 

    @Override 
    public String signIn(String localUserId, Connection<?> connection, NativeWebRequest request) { 
     if (connection.fetchUserProfile().getEmail().matches("^.*@googledomain.com$")) { 
      SecurityContextHolder.getContext().setAuthentication(
        new UsernamePasswordAuthenticationToken(
          userDetailsTransformer.convert(connection), null, 
          Arrays.asList(new SimpleGrantedAuthority(String.format("%s_USER", connection.getKey().getProviderId()))))); 
      return "/"; 
     } else { 
      return "/some-error-page"; 
     } 
    } 
} 
+0

ありがとうございます。私はそれをチェックし、あなたに知らせるでしょう:) – Kishan

+0

私はそこにそれをテストしたので、私はそれに春の社会を持っている進行中のプロジェクトを持っていた。解はこれより小さいかもしれません。 – Tacsiazuma

+0

私はこの解決策を試しましたが、問題はGoogleにサインインする前に本物の電子メールアドレスにしたいのです! Googleドメイン側でいくつかの検証を設定できますか? – Kishan

関連する問題