【问题标题】:Apache Shiro - Keep remember me cookie when logging out?Apache Shiro - 退出时记住我的cookie?
【发布时间】:2014-03-09 20:05:26
【问题描述】:

我正在帮助维护一个使用 Apache Shiro 的应用程序。

我们希望我们的用户能够退出,但保留他们的“记住我”cookie,但显然 Shiro 不支持(滚动到页面底部):

https://shiro.apache.org/java-authentication-guide.html

当您在 Shiro 中注销时,它将关闭用户会话并 从主题实例中删除任何关联的身份。如果你是 在 Web 环境中使用 RememberMe,然后 .logout() 将通过 默认情况下,也会从浏览器中删除 RememberMe cookie。

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: apache shiro remember-me


    【解决方案1】:

    原来这可以通过使用自定义安全管理器来完成:

    public class CustomSecurityManager extends DefaultWebSecurityManager {
        @Override
        protected void beforeLogout(Subject subject)
        {
            super.removeRequestIdentity(subject);
        }    
    }
    

    【讨论】:

    • 有点晚了,但我正在与 Shiro 的 rememberMe 斗争,对:通过扩展 CookieRememberMeManager 并覆盖 public void onLogout(Subject) 方法(来自 AbstRememberMeManager)拥有一个自定义的 RememberMeManager 会更干净吗?
    【解决方案2】:

    你可以:

    1. 复制RememberMe cookie。
    2. 执行他们的注销。
    3. 然后将其复制回原位。

    从未使用过 Apache Shiro,所以我不确定它是如何工作的,或者它是否能完成您想要完成的任务。

    【讨论】:

    • 感谢您的反馈!我们考虑过这样做,但是 Shiro 很好地加密了 cookie 中的用户名……而且这个功能似乎应该是可选的,而不是必需的。
    猜你喜欢
    • 2017-11-07
    • 2011-03-22
    • 1970-01-01
    • 2015-01-30
    • 2011-08-15
    • 2017-06-04
    • 2013-01-03
    • 2012-07-10
    • 2014-12-03
    相关资源
    最近更新 更多