【问题标题】:Spring Security: Custom UserDetails and GrandtedAuthority implementationSpring Security:自定义 UserDetails 和 GrandtedAuthority 实现
【发布时间】:2019-08-22 08:06:38
【问题描述】:

我已经配置了以下身份验证管理器和内存用户服务

<security:authentication-manager alias="authenticationManager">
    <security:authentication-provider>
        <security:password-encoder ref="bcrypt" />
        <security:user-service id="userService">
            <!-- 1234 -->
            <security:user name="1" password="$2a$04$68Oq1PRWyHktgJ2E4Zs9reakETagh81UGEe/QF4V1FJo9kfVBvNHq" authorities="ROLE_1" />
            <security:user name="2" password="$2a$04$68Oq1PRWyHktgJ2E4Zs9reakETagh81UGEe/QF4V1FJo9kfVBvNHq" authorities="ROLE_2" />
        </security:user-service>
    </security:authentication-provider>
</security:authentication-manager>

如何为 Spring 提供自定义的 UserDetailsGrandtedAuthority 实现以在身份验证机制期间填充 Authentication 对象。

【问题讨论】:

    标签: spring authentication spring-security


    【解决方案1】:

    您创建一个实现 UserDetailsService 的 bean 并将其连接到身份验证提供程序:

    <bean id="myUserDetailsService" class="org.example.MyUserDetailsService"/>
    
    <security:authentication-manager alias="authenticationManager">
        <security:authentication-provider user-service-ref="myUserDetailsService">
          <!-- ... -->
        </security:authentication-provider>
    </security:authentication-manager>
    

    在您的UserDetailsService 实现中,您覆盖了loadUserByUsername() 方法。

    如果您不想创建自定义用户类,org.springframework.security.core.userdetails 包含一个基本的User 类。您会注意到构造函数可以选择传递GrantedAuthority 的集合。一个基本的实现是org.springframework.security.core.authority.SimpleGrantedAuthority

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2019-08-06
      • 2012-01-29
      • 1970-01-01
      • 2020-10-14
      • 2013-10-11
      • 2013-09-09
      • 2019-11-06
      • 2010-11-07
      相关资源
      最近更新 更多