2013-02-12 14 views

回答

1

如果使用查询(假设:userstatus 0已禁用,另一个已启用):

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

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

+0

也需要获得userstatus值 – Kandy7 2013-02-12 11:54:50

0

怎么做您的userstatus字段中的值是否表示?它不仅仅是一个二进制启用/禁用标志,但它不完全意味着什么。

检查您是否可以将这些值映射到UserDetails接口的属性(已启用,帐户已过期,账户锁定,凭证已过期)如果是这样,则只需在子类中覆盖JdbcDaoImpl.loadUsersByUsername(),以便根据创建User对象已报名数据库。然后,配置此定制sublclass作为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的其他组件将确保如果启用了用户只能得到验证,没有上锁等

+0

0 - 无效的,1-活动的,组2的其中一个 – Kandy7 2013-02-12 10:04:13

+0

在同一个字段中混合帐户状态和组成员信息不是最好的主意。根据Spring Security文档中指定的用户模式,创建用户数据库可能会更好:http://static.springsource.org/spring-security/site/docs/3.1.x/reference/appendix-schema.html 然后你不需要自定义任何东西,默认的实现就可以开箱即用。 – zagyi 2013-02-12 10:23:12

相关问题