2017-02-17 51 views
0

ログインが無効で、ページを更新してもログインエラーが表示されますが、エラーは消えません。SPRING_SECURITY_LAST_EXCEPTIONメッセージは決して消えません。

<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> 

はログインが失敗したときに表示するが、別の方法である、または私はこのエラーメッセージは、ページを更新または別のページに行く後に表示されないことを修正することができますか?

春の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> 

答えて

2

失敗URLから来ている特別なパラメータが存在する場合は、チェックされていません。あなたのログインページにいくつかの値を入力すると、${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> 

と、ばねのsecurity.xml

param.authにとしてあなたの失敗URLを設定するには、障害のURLでauthパラメータを意味します。 eqは、等しいことを意味します。したがって、authパラメータがfailureに等しい場合、最初に文をチェックしてください。これは、URLから=failureになるものです。

関連する問題