java - Spring 安全。添加用户登录限制

标签 java authentication spring-security

我有以下 spring 安全配置:

<http auto-config="true" authentication-manager-ref="userAuthenticationManager">
        <form-login login-page="/" 
            default-target-url="/member/personalAccount"
            authentication-failure-url="/loginfailed" authentication-success-handler-ref="authSuccessHandler" />

        <!-- <intercept-url pattern="/common/*" filters="none" /> -->
        <intercept-url ..../>
        <logout logout-url="/logout" logout-success-url="/" />
        <port-mappings>
         <port-mapping http="${http.port}" https="${https.port}"/>
        </port-mappings>
    </http>

    ....


    <authentication-manager alias="userAuthenticationManager">
        <!-- <authentication-provider user-service-ref="userSecurityService"> -->
        <authentication-provider>
            <password-encoder ref="encoder" />
            <jdbc-user-service data-source-ref="dataSource" 
                users-by-username-query="select email,password,prop_was_moderated from terminal_user where email = ?"  
                authorities-by-username-query="select email,user_role from terminal_user where email = ?" />
        </authentication-provider>
    </authentication-manager>

现在我想向 terminal_user 表添加新列。 此列名为 prop_confirmed

我想实现只有prop_confirmedtrue的用户才能登录。

你能帮我实现它吗?

最佳答案

一种方法是在 users-by-username-query 中硬编码 prop_confirmed 条件。这样,如果用户未得到确认,就会如同他们不存在一样,身份验证将失败:

select email,password,prop_was_moderated from terminal_user
    where email = ? AND prop_confirmed = TRUE

还有其他(可能更干净的)解决方案,例如自定义 AuthenticationManager。看看我的SO answer关于类似问题以获取这些选项的更详细描述。

关于java - Spring 安全。添加用户登录限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758609/

相关文章:

java - Hibernate 级联多对多在子引用中创建重复项

java - java中读取类似文本文件时出错

ubuntu - Jenkins cli 命令返回身份验证错误

java - AbstractRoutingDataSource 在运行时更改映射

java - Controller (Web 请求/antMatcher)安全性与方法(服务)级安全性

java - Gmail API - 邮件正文包含破折号,无法进行 base64 解码

java - 如何通过java在mac上运行dmg

java - java 应用程序中使用 jndi 时出现身份验证错误 49 52e - 无效 token

Java登录并使用框架创建帐户并重定向到另一个框架

java - 如何验证并重定向到外部应用程序以进行 SSO?