2015-12-06 248 views
1
基於

春季安全的Java配置(這不是Spring MVC的,只是servlet的Web應用程序)春季安全 - 顯示註銷消息

@Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login.jsp") 
       .permitAll(); 
    } 

和登錄頁面

<form name='loginForm' action="" method='POST'> 

      <c:if test="${param.logout != null}"> 
       <p>You have been logged out.</p> 
      </c:if> 

      <table> 
       <tr> 
        <td>User:</td> 
        <td><input type='text' name='username'></td> 
       </tr> 
       <tr> 
        <td>Password:</td> 
        <td><input type='password' name='password' /></td> 
       </tr> 
       <tr> 
        <td colspan='2'><input name="submit" type="submit" 
         value="submit" /></td> 
       </tr> 
      </table> 

      <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> 

     </form> 

並沒有其他頁面註銷鏈接,所以註銷動作logout(第2頁)

<form action="logout" method="post"> 
     <input type="submit" value="Logout" /> 
     <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
    </form> 

我在成功地loged後然後按下注銷按鈕(從第2頁開始),它將我返回到登錄頁面,但登錄頁面未顯示註銷消息<c:if test="${param.logout != null}">。之後,我嘗試再次登錄,但它不起作用(它只是在註銷後登錄)並向我顯示一條註銷消息。爲什麼它以這種方式工作,以及如何解決它在註銷按下後顯示註銷消息。

+0

什麼讓你相信帕拉姆'param.logout'存在? - 你有任何描述/使用它的文檔或教程嗎? – Ralph

+0

找到它了:http://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#jc-form – Ralph

回答

1

嘗試配置註銷

http 
     .logout()                 
      .logoutUrl("/logout")             
      .logoutSuccessUrl("/login")