独自のサインインアダプタを実装する場合は、アイデンティティプロバイダからユーザープロファイルを取得するオプションがあり、これを使用して電子メールアドレスを検証できます。ここに返される文字列はリダイレクト先の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";
}
}
}
ありがとうございます。私はそれをチェックし、あなたに知らせるでしょう:) – Kishan
私はそこにそれをテストしたので、私はそれに春の社会を持っている進行中のプロジェクトを持っていた。解はこれより小さいかもしれません。 – Tacsiazuma
私はこの解決策を試しましたが、問題はGoogleにサインインする前に本物の電子メールアドレスにしたいのです! Googleドメイン側でいくつかの検証を設定できますか? – Kishan