如何以编程方式注销Spring Security Persistent Token Based RememberMe Services

时间:2014-08-12 17:55:56

标签: cookies spring-security remember-me

我在项目中使用Spring Data REST和Spring Security。 AM使用基于持久令牌的记住我的Spring安全服务来记住登录用户,我试图使会话无效并以编程方式从存储库和cookie中删除数据。我已经尝试了以下代码,但只为该请求工作,如果再次提出另一个请求,则再次进行身份验证。如何在会话失效后从数据库和浏览器中删除cookie。

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null){    
    new SecurityContextLogoutHandler().logout(request, response, auth);
    new PersistentTokenBasedRememberMeServices().logout(request, response, auth);
}
SecurityContextHolder.getContext().setAuthentication(null);

是否可以使用弹簧安全性的PersistentTokenBasedRememberme服务使会话无效并删除?还有什么额外的东西要用来删除cookie吗?

1 个答案:

答案 0 :(得分:2)

你需要依赖注入rememberMeServices。这应该有效:

def rememberMeServices

def yourAction(){

    SecurityContextHolder.clearContext(); //invalidates auth
    rememberMeServices.logout(request, response, null) // removes rememberMe cookie

}