在 Spring Security OpenID 中,如何获取用户详细信息?(电子邮件、名字、..)
除了 !我想在 java 或 jsp 文件中获取这些,而不是在 xml 文件中。
在 Spring Security OpenID 中,如何获取用户详细信息?(电子邮件、名字、..)
除了 !我想在 java 或 jsp 文件中获取这些,而不是在 xml 文件中。
您需要的称为属性交换。它是 OpenID 的一项功能,允许从提供商交换用户注册数据(例如姓名、电子邮件等)。注意:支持的属性交换值列表因提供者而异。
假设您已经配置了 OpenID 并运行了 Spring Security,那么启用属性交换非常简单。
<!--in your spring config -->
<openid-login ....>
<!-- here is sample config for getting email -->
<attribute-exchange>
<openid-attribute
name="email"
type="http://schema.openid.net/contact/email"
required="true"
/>
</attribute-exchange>
</openid-login>
Spring 会将属性数据保存到OpenIDAuthenticationToken
. 然后在你的 *UserDetailsService
public UserDetails loadUserDetails(OpenIDAuthenticationToken token) {
...
List<OpenIDAttribute> attributes = token.getAttributes();
user.setEmail(getAttribute("email", attributes));
..
}
private String getAttribute(String attrName, List<OpenIDAttribute> attrs) {
//do work to parse for email attribute
}