-3

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

users-by-username-query="SELECT a AS username, b AS password, userstatus AS enabled. 这个userstatus有多个值.0,1,2,3...

4

2 回答 2

1

使用 if 进行查询(假设:userstatus 0 被禁用,另一个被启用):

SELECT a AS username, b AS password, if(userstatus=0,0,1) AS enabled

你可以在里面添加另一个 if 语句。

于 2013-02-12T11:01:02.327 回答
0

您的用户状态字段中的值代表什么?它不仅仅是一个二进制启用/禁用标志,但尚不清楚它的确切含义。

检查您是否可以将这些值映射到UserDetails接口的属性(启用、帐户过期、帐户锁定、凭据过期)。如果是这样,您只需JdbcDaoImpl.loadUsersByUsername()在子类中覆盖,以便它User根据userstatus数据库中的字段创建对象。然后将此自定义子类配置为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 的其他组件将确保用户只有在启用、未锁定等情况下才能获得身份验证。

于 2013-02-12T09:59:26.780 回答