【问题标题】:Spring Boot: Iterate and evaluate all (active) sessionsSpring Boot:迭代和评估所有(活动)会话
【发布时间】:2019-01-29 11:20:17
【问题描述】:

示例:我想限制一次登录,例如,五个桌面会话和五个移动会话。因此,我为每个会话添加了一个标志,例如

request.getSession().setAttribute("Session-Type", "mobile");

现在,当任何用户登录时,我想计算所有活动的移动/桌面会话,并根据该计数允许/禁止登录。 我该如何做到这一点?

我知道我可以使用 SessionRegistry 访问 Principals 和/或他们的 SessionInformation,但不能访问实际会话...

编辑:我正在使用 Hazelcast 来存储会话,如果这有帮助的话

【问题讨论】:

    标签: java spring spring-security hazelcast spring-session


    【解决方案1】:

    仅适用于 Hazelcast:

    @Autowired
    private HazelcastInstance hazelcastInstance;
    
    // ...
    
    // from org.springframework.session.hazelcast.HazelcastSessionRepository
    final Collection<Session> sessions = (Collection) hazelcastInstance.getMap(HazelcastSessionRepository.DEFAULT_SESSION_MAP_NAME).values();
    for(final Session session : sessions) {
      System.out.println(session.getId() + ": " + session.getAttribute("Session-Type"));
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 2021-08-27
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 2019-01-30
      • 2013-06-19
      • 2010-12-01
      相关资源
      最近更新 更多