通过Spring 3安全注销

时间:2013-12-14 23:41:04

标签: spring spring-security

无论我做什么,我都无法退出工作。我有一个只能通过会员角色看到的菜单。我已经尝试了会话的无效,以及通过Spring文档的/ j_spring_security_logout ......都转发到主页,但菜单和凭据显示在主页上。因此注销不起作用。这是我的Spring Security.xml文件条目。

<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://");
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您只需要一个注销处理程序而无需其他控制器:

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

让用户请求网址http://localhost/yourApp/logout