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 逻辑,我将临时密码发送到用户的电子邮件地址,并将有效设置为零。
我希望我在上面的解释中有意义!