Spring Security自定义筛选器URL映射不适用于JdbcDAOImpl

时间:2014-03-11 08:11:29

标签: spring spring-security

Spring Security.xml:

 <!--form login-->
        <form-login login-page="/UserLogin" default-target-url="/XploreHome"
                    authentication-failure-handler-ref="ExceptionTranslationFilter"/>
                <logout invalidate-session="true" logout-url="/logout" />
    <!--Exception filters-->
        <beans:bean id="ExceptionTranslationFilter"
                class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
                <beans:property name="exceptionMappings">
                    <beans:props>
                    <beans:prop
                            key="org.springframework.security.authentication.BadCredentialsException">/UserLogin?x=1</beans:prop>
                        <beans:prop
                            key="org.springframework.security.authentication.CredentialsExpiredException">/resetPasswd</beans:prop>
                        <beans:prop
                             key="org.springframework.security.authentication.LockedException">/resetPasswd</beans:prop>
                        <beans:prop
                            key="org.springframework.secuirty.authentication.DisabledException">/resetPasswd</beans:prop> 
                    </beans:props>
                </beans:property>
            </beans:bean>
<!--JDBC USER service-->
<jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="select emailAddress,password,active from userdetails where emailAddress=?"
                authorities-by-username-query="select ux.emailAddress,ax.authority from userdetails ux,userauthority ax where ux.PK_USER_ID=ax.PK_AUTHORITY_ID and  ux.emailAddress=?" />

如果数据库列中的有效值设置为0,那么我会在浏览器中获取用户被禁用例外,而不是 resetPassword

resetPassword页面仅供经过身份验证的用户访问。

我的网络应用如何运作或打算工作:

当新用户注册时,我会将临时密码发送到他的电子邮件地址,并将有效设置为0。

当他第一次使用该密码登录时,我需要强制他更改密码但我收到此错误

HTTP Status 401 - Authentication Failed: User is disabled

我从春季文档中发现了这个例外它说如果用户帐户被禁用,它将永远不会对用户进行身份验证,因此我无法导航到 resetPassword 页面,那我该如何解决这个问题?并强制用户 resetPassword 页面。

如果有效,我可以将此逻辑应用于我的 forgotPwd 逻辑,我将临时密码发送到用户的电子邮件地址,并将有效设置为零。

我希望我在上面的解释中有意义!

0 个答案:

没有答案