Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring security 在SpringSecurityOpenID中,如何获取用户详细信息?_Spring Security_Openid - Fatal编程技术网

Spring security 在SpringSecurityOpenID中,如何获取用户详细信息?

Spring security 在SpringSecurityOpenID中,如何获取用户详细信息?,spring-security,openid,Spring Security,Openid,在SpringSecurityOpenID中,如何获取用户详细信息?(电子邮件、名字……) 除了!我想在java或jsp文件中获取这些,而不是xml文件。您需要的是属性交换。这是OpenID的一项功能,允许从提供商处交换用户注册数据(如姓名、电子邮件等)。注意:支持的属性交换值列表因提供程序而异 假设您已经配置了Spring安全性和OpenID,并且可以正常工作,那么启用属性交换是非常简单的 <!--in your spring config --> <openid-login

在SpringSecurityOpenID中,如何获取用户详细信息?(电子邮件、名字……)


除了!我想在java或jsp文件中获取这些,而不是xml文件。

您需要的是属性交换。这是OpenID的一项功能,允许从提供商处交换用户注册数据(如姓名、电子邮件等)。注意:支持的属性交换值列表因提供程序而异

假设您已经配置了Spring安全性和OpenID,并且可以正常工作,那么启用属性交换是非常简单的

<!--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>

我知道这一点。但若我使用,每当一个用户要求登录时,提供者总是要求用户访问信息。我只想第一次获得信息-用户登录我的网站。请更新您的问题以反映您的需求!你问过如何获取用户详细信息-现在你说你已经知道了。
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
}