2013-07-02 93 views

回答

0

你需要什么叫做属性交换。这是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。然后在你的* UserDetailsS​​ervice

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 
} 
+0

我知道这一点。但是如果我使用,每当一个用户要求登录时,提供者总是要求用户访问信息。我只想第一次获取信息 - 用户登录我的网站。 – user2524179

+0

请更新您的问题以反映您想要的内容!你问如何获取用户详细信息 - 现在你说你已经知道这一点。 – ikumen

相关问题