2013-12-14 67 views
0

不管我做什麼我都無法登出去工作。我有一個只有通過成員角色才能看到的菜單。我已經嘗試了會話的無效,以及通過Spring文檔的/ j_spring_security_logout ...都轉發到主頁,但菜單和憑證出現在主頁上。因此註銷不起作用。這是我的Spring Security.xml文件條目。通過Spring註銷3安全

<logout logout-url="/logout"/> 
<logout logout-url="/j_spring_security_logout" logout-success-url="/home" 
     delete-cookies="JSESSIONID" invalidate-session="true"/> 

正如你所看到的我已經嘗試了兩種。這裏是註銷控制器。

@RequestMapping(value = "/logout", method=RequestMethod.GET) 
public String logout(HttpServletRequest request, HttpServletResponse response) { 
    logger.info("Logging out!"); 

    response.setHeader("pragma", "no-cache");    
    response.setHeader("Cache-control", "no-cache, no-store, must-revalidate"); 
    response.setHeader("Expires", "0"); 

    Cookie jSessionCookie = new Cookie("JSESSIONID", null); 
    jSessionCookie.setMaxAge(0); 
    response.addCookie(jSessionCookie); 
    Cookie activityIdCookie = new Cookie("activityId", null); 
    activityIdCookie.setMaxAge(0); 
    response.addCookie(activityIdCookie); 

    request.getSession().invalidate(); //Attempt to logout user.  

    return ("redirect://"); 
} 

任何幫助,非常感謝。

+0

*註銷*由安全篩選器鏈處理(就像Spring Security中的幾乎所有)。實際的*註銷*請求將永遠不會將其發送給調度程序servlet。不要手動實現註銷邏輯(會話失效等)。請參閱*拉爾夫的*答案... –

回答

1

你只需要一個註銷處理程序,並沒有額外的控制器:

<logout logout-url="/logout" logout-success-url="/home" /> 

只是讓用戶請求的URL http://localhost/yourApp/logout

+0

但它不起作用... – user3103336

+0

我做到了..它帶我到主頁..問題是用戶仍然在進入。他們的權限仍然存在,用戶credentitals仍然存在。 – user3103336

+0

這是要走的路,如果它不起作用,問題一定在其他地方。你使用tomcat嗎? tomcat管理器具有查看會話的功能。 Spring Security將其用戶信息存儲在會話中。您可以使用tomact管理器驗證會話ID在註銷時發生變化,並查看Spring安全性存儲的信息。 – Ralph