【问题标题】:How to programmatically logout with Spring Security Persistent Token Based RememberMe Services如何使用基于 Spring Security 持久令牌的 RememberMe 服务以编程方式注销
【发布时间】:2014-10-05 22:01:12
【问题描述】:

我在我的项目中使用 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);

是否可以使使用 Spring Security 的 PersistentTokenBasedRememberme 服务的会话无效和删除?我必须使用什么额外的东西来删除 cookie 或其他?

【问题讨论】:

    标签: cookies spring-security remember-me


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-04
      • 2014-04-17
      • 2012-03-22
      • 2017-07-15
      • 2018-09-01
      • 2015-08-25
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多