【问题标题】:In Spring Security OpenID, How can I get to user detail informations?在 Spring Security OpenID 中,如何获取用户详细信息?
【发布时间】:2013-07-02 06:14:32
【问题描述】:

在 Spring Security OpenID 中,如何获取用户详细信息?(电子邮件、名字、..)

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

【问题讨论】:

    标签: spring-security openid


    【解决方案1】:

    您需要的称为属性交换。这是 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
    }
    

    【讨论】:

    • 我知道这一点。但如果我使用,每当一个用户要求登录时,提供商总是要求用户访问信息。我只想在第一次获得信息 - 用户登录我的网站。
    • 请更新您的问题以反映您的需求!你问如何获取用户详细信息 - 现在你说你已经知道了。
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 2015-03-09
    • 2012-05-23
    • 2016-08-01
    • 2019-01-01
    • 2018-03-14
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多