2
我正在整合Google+登录Spring社交& Boot。带有特定域名的Spring Boot的Google社交登录
但是,它允许我使用@gmail.com
域登录,但现在我只想为组织设置signIn选项。即[email protected]
我们如何为Spring Social添加特定的域名验证?
我正在整合Google+登录Spring社交& Boot。带有特定域名的Spring Boot的Google社交登录
但是,它允许我使用@gmail.com
域登录,但现在我只想为组织设置signIn选项。即[email protected]
我们如何为Spring Social添加特定的域名验证?
当您实现自己的登录适配器时,您可以选择从身份提供商处获取用户配置文件,并且您可以验证电子邮件地址。这里返回字符串表示的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
我已经尝试过这个解决方案,但问题是我想要在登录谷歌之前正确的电子邮件地址! 我们可以在谷歌域端设置一些验证吗? – Kishan