使用Shiro和Spring WebMVC (Java8, Spring 4.x)从WebApp注销所有仍然登录的用户



我对shiro相当陌生,所以我的问题是:

我已经在Tomcat 8容器上使用Spring WebMVC/Spring Framework (4.x)将Shiro实现到应用程序中。到目前为止,角色和权限工作正常,登录也是,但问题是,当我重新部署我的war-file/停止/重新启动服务器时,会话仍然工作,这不是这里的目的。

将是伟大的得到一个提示,我要做的是实现的东西,像所有登录的用户的"自动注销"后重新部署/重启服务器,例如重定向到loginpage和显示一个模态或s.th。提示"由于[原因],您已退出登录"。

最诚挚的问候,杜米尼克

您可以使用SessionDAO接口,但是您需要做额外的配置,以便shiro使用SessionDAO,如下所示:

http://shiro.apache.org/session-management.html SessionManagement-SessionStorage

当你正确配置它时,你可以这样做:

    DefaultSecurityManager securityManager = (DefaultSecurityManager) SecurityUtils.getSecurityManager();
    DefaultSessionManager sessionManager = (DefaultSessionManager) securityManager.getSessionManager();
    Collection<Session> activeSessions = sessionManager.getSessionDAO().getActiveSessions();
    for (Session session: activeSessions){
         session.stop();
    }

只是,如果你想要像你建议的那样有一个消息,你不能在删除会话后这样做,因为服务器不再知道浏览器会话是否注销。

相反,你可以做的是写一些东西到db上面的session.stop(),即设置一个标志,下一个请求应该导致自动退出的动作,你可能会实现自动退出逻辑使用过滤器

相关内容

  • 没有找到相关文章

最新更新