我在web-app中使用下面的注销方法,但是如果我检查remember me
注销不起作用,因为cookie未被清除。如何在我的方法中以编程方式清除此cookie(或如何制作更好的注销方法)?如果您使用的是自定义的Spring Security:如何以编程方式清除“记住我”cookie?
void cancelCookie(HttpServletRequest request, HttpServletResponse response)
{
String cookieName = "SPRING_SECURITY_REMEMBER_ME_COOKIE";
Cookie cookie = new Cookie(cookieName, null);
cookie.setMaxAge(0);
cookie.setPath(StringUtils.hasLength(request.getContextPath()) ? request.getContextPath() : "/");
response.addCookie(cookie);
}
你必须改变cookieName
值:
public void logout() {
AnonymousAuthenticationToken anonymous = new AnonymousAuthenticationToken("anonymous", "anonymous", new ArrayList(Arrays.asList(new GrantedAuthorityImpl("ROLE_ANONYMOUS"))));
SecurityContextHolder.getContext().setAuthentication(anonymous);
}
如何获取请求和响应?春天什么都不能清除那个? – marioosh 2011-06-07 13:21:18
只需将它们传递到您的控制器:'公共无效注销(HttpServletRequest请求,HttpServletResponse响应){'。 Spring MVC会自动将它们传入。 – Femi 2011-06-07 13:31:26