用户帐户被禁用 - Spring Security

时间:2016-01-27 01:00:01

标签: java spring spring-security

我正在开发一个使用Spring Security 4.0.2对用户进行身份验证的Web应用程序。用户名/密码。

当我尝试使用现有用户名登录时,Spring安全性会告诉我"用户帐户已停用",但我不知道如何更改此信息。

我的背景:

<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/private/**" access="hasRole('ROLE_USER')" />

    <!-- Erro aqui -->
    <form-login login-page="/public/login.xhtml"
        username-parameter="j_username" password-parameter="j_password"
        login-processing-url="/j_spring_security_check"
        authentication-failure-url="/public/login.xhtml?login_error=1"
        authentication-success-handler-ref="authenticationSuccessHandler" />

    <logout logout-success-url="/public/login.xhtml" />
    <csrf disabled="true" />
</http>

<b:bean id="authenticationSuccessHandler"
    class="br.com.jway.security.UrlAuthenticationSuccessHandler" />
<!-- Select users and user_roles from database -->
<authentication-manager>
    <authentication-provider>
        <password-encoder hash="md5" />
        <jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="SELECT login,senha,role FROM usuario WHERE login = ?"
            authorities-by-username-query="SELECT login, role FROM usuario WHERE login = ? " />
    </authentication-provider>
</authentication-manager>

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

JDBCUserDetailsService)的标准JdbcDaoImpl实施要求表格为用户加载密码,帐户状态(启用或禁用)以及权限列表(角色)

问题是您的查询加载帐户状态:

users-by-username-query="SELECT login,senha,role FROM usuario WHERE login = ?

此查询应提供usernamepasswordenabled。我想你应该用role替换enabled,我不知道senha实际上是什么!

答案 1 :(得分:0)

扩展您的查询以获取enabled属性:

users-by-username-query :用于在给定用户名的情况下查询用户名,密码和启用状态的SQL语句。默认值为

select username, password, enabled from users where username = ?

您可以在Spring Security Documentation, JDBC User Service

中找到详细信息