Spring 引导:迭代并评估所有(活动)会话
Spring Boot: Iterate and evaluate all (active) sessions
示例:我想将登录限制为一次登录,例如,五个桌面会话和五个移动会话。因此我在每个会话中添加了一个标志,例如
request.getSession().setAttribute("Session-Type", "mobile");
现在,当任何用户登录时,我想计算所有活动的 mobile/desktop 会话和基于该计数的 allow/disallow 登录。 我该如何完成?
我知道我可以使用 SessionRegistry
to access Principals and/or their SessionInformation
,但不能使用实际会话...
编辑:我正在使用 Hazelcast 来存储会话,如果这有帮助的话
仅使用 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"));
}
示例:我想将登录限制为一次登录,例如,五个桌面会话和五个移动会话。因此我在每个会话中添加了一个标志,例如
request.getSession().setAttribute("Session-Type", "mobile");
现在,当任何用户登录时,我想计算所有活动的 mobile/desktop 会话和基于该计数的 allow/disallow 登录。 我该如何完成?
我知道我可以使用 SessionRegistry
to access Principals and/or their SessionInformation
,但不能使用实际会话...
编辑:我正在使用 Hazelcast 来存储会话,如果这有帮助的话
仅使用 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"));
}