以编程方式使 HttpSession 失效



是否可以终止登录用户的 HttpSession?

我们可以在用户的会话中执行以下操作:

HttpSession s = request.getSession(false);
s.invalidate(); // make sure s != null

但是,管理员用户如何"踢出"给定用户?

我希望在ServletContext下找到一些 API,它会返回活动会话列表,但事实似乎并非如此。

我正在使用Spring Security 3和Tomcat 7。

Spring Security有一个SessionRegistry来处理这种情况。您可以使用concurrency-control标记中的session-registry-ref属性声明它。这里有一些文档。

基本上有两种方法(将 Spring 安全性排除在考虑之外,因为我不做 Spring(:

  1. 在某些应用程序范围的Map<User, HttpSession>中收集所有这些会话。然后就做

    sessions.get(user).invalidate();
    

    HttpSessionListener和/或HttpSessionBindingListener可能有助于在会话超时/过期的情况下清理应用程序范围Map

  2. 向数据库添加一个布尔列,该列在每个请求上由某个过滤器检查。

    if (shouldLogout(user)) {
        session.invalidate();
    }
    

相关内容

  • 没有找到相关文章

最新更新