如何在Spring-MVC中执行用户锁定?

时间:2015-07-31 06:38:49

标签: java spring hibernate spring-mvc

我想知道如何执行用户锁定(或执行相同操作的最佳方法),即如果用户已从设备登录并尝试从其他设备登录,则应通知他/她会话已经可供该用户使用,并且可以选择关闭其他会话并启动新会话。

Framework使用Spring-MVC + hibernate 4.1。

还有一件事:如何在应用程序上下文中设置一些用户hashmap对象的列表?

2 个答案:

答案 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属性值,我们可以轻松定义最大并发用户。