集群环境中的春季会议

时间:2016-06-21 09:32:23

标签: spring spring-security spring-session

我们有两个应用程序是" Spring Session"它们之间。 在应用程序中,管理员可以强制注销其他在线用户。在我们使用" Spring Session"之前,我们从SessionRegistry获取所有在线用户,并使用以下方法强制注销用户。但是现在当用户登录到app1时,app1的SessionRegistry会保持会话信息但app2的SessionRegistry不能保留!

enter image description here

public void forceLogOut(int userId) {
    for (Object username : sessionRegistry.getAllPrincipals()) {
        User temp = (User) username;
        if (temp.getId().equals(userId)) {
            for (SessionInformation session : sessionRegistry.getAllSessions(username, false)) {
                sessionRegistry.getSessionInformation(session.getSessionId()).expireNow();
            }
        }
    }
}

我们有两个问题:

  1. 当用户从app1登录时,app2无法获得所有在线用户!如何从拖曳应用程序获得所有在线用户(相同的结果)?
  2. 上面的方法无法正常工作,当我强制从app2注销一个用户时,从app1登录。什么是最好的方式?

0 个答案:

没有答案