2

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

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

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

但是管理员用户如何“踢出”给定用户呢?

我希望找到一些 APIServletContext来返回活动会话列表,但情况似乎并非如此。

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

4

2 回答 2

3

基本上有两种方法(因为我不做 Spring,所以不考虑 Spring Security):

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

    sessions.get(user).invalidate();
    

    在会话超时/到期的情况下,HttpSessionListener和/或HttpSessionBindingListener可能有助于清理整个应用程序。Map

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

    if (shouldLogout(user)) {
        session.invalidate();
    }
    
于 2012-09-04T16:52:41.393 回答
3

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

于 2012-09-04T16:56:10.017 回答