Spring 如何创建具有多个状态的身份验证管理器
如何使用数据库创建身份验证管理器 users by username query=“选择a作为用户名,选择b作为密码,选择userstatus作为已启用。Spring 如何创建具有多个状态的身份验证管理器,spring,spring-security,Spring,Spring Security,如何使用数据库创建身份验证管理器 users by username query=“选择a作为用户名,选择b作为密码,选择userstatus作为已启用。 此userstatus有多个值。0,1,2,3…userstatus字段中的值代表什么?它不仅仅是一个二进制启用/禁用标志,但不清楚它的确切含义 检查是否可以将这些值映射到UserDetails接口的属性(已启用、帐户过期、帐户锁定、凭据过期)。如果可以,只需覆盖jdbdaoimpl.loadUsersByUsername()在子类中,以便它
此userstatus有多个值。0,1,2,3…userstatus字段中的值代表什么?它不仅仅是一个二进制启用/禁用标志,但不清楚它的确切含义 检查是否可以将这些值映射到
UserDetails
接口的属性(已启用、帐户过期、帐户锁定、凭据过期)。如果可以,只需覆盖jdbdaoimpl.loadUsersByUsername()
在子类中,以便它根据数据库中的userstatus
字段创建User
对象。然后将此自定义子类配置为UserDetailsService
:
<authentication-manager>
<authentication-provider user-service-ref='myUserDetailsService'/>
</authentication-manager>
<beans:bean id="myUserDetailsService" class="YourCustomJdbcDaoImpl">
<beans:property name="dataSource" ref="dataSource"/>
</beans:bean>
Spring Security的其他组件将确保用户只有在启用、未锁定等情况下才能获得身份验证。使用if进行查询(假设:userstatus 0已禁用,另一个已启用):
您可以在其中添加另一条if语句。0-deactive、1-active、2-groupMixing帐户状态和组成员信息在同一字段中不是最好的主意。您最好根据Spring安全文档中指定的用户模式创建用户数据库:这样您就不必自定义任何内容默认实现只是开箱即用。您还需要获取userstatus值吗
SELECT a AS username, b AS password, if(userstatus=0,0,1) AS enabled