【发布时间】:2015-01-01 20:55:27
【问题描述】:
我写这个问题是为了了解如何控制用户可以参考 Spring Security 的会话数 在春季,我可以定义所有用户必须拥有的最大会话数,即通过我定义的会话管理,例如,所有用户不应被允许拥有超过 3 个会话
.sessionManagement().maximumSessions(3)
仅此还不够,即我们需要为 servlet 容器提供一种方法来通知 Spring Security 更新会话或删除会话等。因此我们需要配置 HttpSessionEventPublishet
@Bean
public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() {
return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher());
}
现在的问题是我如何配置这样的东西: 应该允许管理员用户将最大会话数设置为 8 个会话 pro 管理员用户,但不应允许普通用户每个用户拥有超过一个会话。
【问题讨论】:
-
根据
ConcurrentSessionControlAuthenticationStrategy类实施您自己的策略。您需要覆盖getMaximumSessionsForThisUser方法并在那里实现您的逻辑。然后将您的自定义实施与sessionmanagement连接起来。 -
Deinum 感谢您的回复,我将花一周时间处理该信息并让您知道这是否是答案,这对我来说似乎是合理的。再次感谢您的快速反馈。
标签: spring concurrency spring-security