2015-12-06 204 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")