Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 如何创建具有多个状态的身份验证管理器_Spring_Spring Security - Fatal编程技术网

Spring 如何创建具有多个状态的身份验证管理器

Spring 如何创建具有多个状态的身份验证管理器,spring,spring-security,Spring,Spring Security,如何使用数据库创建身份验证管理器 users by username query=“选择a作为用户名,选择b作为密码,选择userstatus作为已启用。 此userstatus有多个值。0,1,2,3…userstatus字段中的值代表什么?它不仅仅是一个二进制启用/禁用标志,但不清楚它的确切含义 检查是否可以将这些值映射到UserDetails接口的属性(已启用、帐户过期、帐户锁定、凭据过期)。如果可以,只需覆盖jdbdaoimpl.loadUsersByUsername()在子类中,以便它

如何使用数据库创建身份验证管理器

users by username query=“选择a作为用户名,选择b作为密码,选择userstatus作为已启用。
此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