我想知道如何执行用户锁定(或执行相同操作的最佳方法),即如果用户已从设备登录并尝试从其他设备登录,则应通知他/她会话已经可供该用户使用,并且可以选择关闭其他会话并启动新会话。
Framework使用Spring-MVC + hibernate 4.1。
还有一件事:如何在应用程序上下文中设置一些用户hashmap对象的列表?
答案 0 :(得分:2)
可以使用Spring Security和Conncurrent Session Control完成。您可以定义可以同时存在的会话数,并决定在最大值超过时要执行的操作。
答案 1 :(得分:0)
它们是弹簧安全性中的简单xml配置。首先,您必须注册SessionRegistry bean。我已经为Session注册表使用了Spring安全性的默认类SessionRegistryImpl,如:
<bean id="sessionRegistry"
class="org.springframework.security.core.session.SessionRegistryImpl" />
之后我们必须向容器注册ConcurrentSessionControlStrategy并告诉它每个用户允许的最大会话数。 例如:
<bean id="sessionStrategy"
class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<constructor-arg name="sessionRegistry" ref="sessionRegistry" />
<property name="maximumSessions"
value="${security.config.sessionStrategy.maximumSessions.value}" />
<property name="exceptionIfMaximumExceeded" value="true" />
</bean>
security.config.sessionStrategy.maximumSessions.value
是属性文件中指定的整数值。通过改变maximumSessions属性值,我们可以轻松定义最大并发用户。