如果登录无效,我显示登录失败错误,但即使刷新页面,错误也不会消失。
<c:if test="${not empty SPRING_SECURITY_LAST_EXCEPTION}">
<font color="red">
Invalid username or password. Did you forget your password?
<a href="#">I forgot</a>
</font>
</c:if>
是否有其他方式可以显示登录失败的时间,或者我如何修复刷新页面或转到其他页面后不会显示此错误消息?
Spring-security.xml:
<security:http auto-config="false" use-expressions="true">
<security:intercept-url pattern="/profile" access="hasRole('ROLE_USER')"/>
<security:form-login
login-page="/clogin"
authentication-failure-url="/clogin?error=1"
default-target-url="/profile"
username-parameter="username"
/>
<security:logout logout-success-url="/logout" invalidate-session="true" delete-cookies="true" />
<security:csrf />
</security:http>
答案 0 :(得分:2)
您没有检查是否存在来自故障网址的特殊参数。在您的情况下,在您的登录页面中输入一些值后,${not empty SPRING_SECURITY_LAST_EXCEPTION}
并不总是为空。
试试这个:
<c:if test="${param.auth eq 'failure'}">
<div class="error">
<font color="red">
<c:out value="Username or password that you entered is invalid." /> .
</font>
</div>
</c:if>
并在spring-security.xml
中将您的失败网址设置为/clogin?auth=failure
param.auth
表示失败网址中的auth
参数。 eq
表示平等。因此,如果auth
参数等于failure
来自=failure
来自网址,请首先检查对帐单。