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

jAd*_*ict 5 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);
Run Code Online (Sandbox Code Playgroud)

是否可以使用Spring Security的PersistentTokenBasedRememberme服务使会话无效并删除?还有什么我必须用来删除cookie或其他?

Ber*_*ard 2

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

def rememberMeServices

def yourAction(){

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

}
Run Code Online (Sandbox Code Playgroud)