1

我已经实现了spring security,我可以使用以下代码获取所有登录用户并将它们显示在在线标签下

 for (Object user: sessionRegistry.getAllPrincipals()) {
            User onlineUser = (User) user;
            onlineUsersIds.add(onlineUser.getId());
         }

这是否可以知道用户刚刚登录,以便我可以更新在线用户列表,或者我必须每 5 或 10 分钟检查一次 sessionRegistry,然后每 5 或 10 分钟更新用户列表。

如果您需要任何其他详细信息,请告诉我。

4

1 回答 1

1

我会使用这个:javax.servlet.http.HttpSessionBindingListener http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSessionBindingListener.html

这将基于“每个会话”。

所以每次有人通过身份验证时,spring security 都会在会话中放入某些值。

您所做的是,使用“valueBound”和“valueUnbound”方法检查该会话属性。这些方法将获得应用程序范围内的“设置”或同步“设置”相应地处理它们

每次渲染页面时,您只需从应用程序范围集中读取

于 2012-12-05T18:20:45.367 回答