日期:2014-05-18  浏览次数:20637 次

ssh2框架单用户登录
我现在在做一个ssh2系统,客户想让用户实现单用户登录,比如一个账号登录了,在另一台电脑上登录该账号,则之前登录的那台电脑中的用户就不能使用了(可以出现“用户已在其他地区登录”这样的说明),我的是ssh2+spring security(spring权限验证),请问这样的怎样做,谢谢。

------解决方案--------------------
1个问题解决就好办
1.IE用户直接点右上角的x关闭网页时间怎么捕获(ALT+f4)
2.多tab浏览器,如FF/google chrome/IE8/9等关掉该TAB怎么捕获(CTRL+w)

这2个问题解决不了,这个需求还是考虑怎么去跟客户解释去掉这个功能比较好。
或者自己写个浏览器,制作一个客户端,强制客户使用自己的浏览器登录,比如招行网银客户端。

------解决方案--------------------
spring security就可以实现单用户登录

<beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<beans:constructor-arg name="sessionRegistry" ref="sessionRegistry"></beans:constructor-arg>
<beans:property name="maximumSessions" value="1"></beans:property>
<!-- 后登录的用户不能顶替前面已登录的用户 
<beans:property name="exceptionIfMaximumExceeded" value="true"></beans:property>
-->
</beans:bean>

maximumSessions 控制相同用户session数量 exceptionIfMaximumExceeded控制相同用户登录是否顶替已登录用户
------解决方案--------------------
(1)在数据库建一张用户信息表和一张存放session信息的表,表之间通过userid关联;

(2)在登录页面根据登录的用户名和密码,生成一个新的session信息写到session表里,同时开启session,更新登录用户的时间戳;

(3)登录成功后判断该用户是不是在其他地方已登录(根据session表的信息可以判断),如果有的话强制退出用户,弹出“用户已在其他地区登录”提示信息,并删除旧有的session记录信息。
------解决方案--------------------
引用:
Quote: 引用:

spring security就可以实现单用户登录

<beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<beans:constructor-arg name="sessionRegistry" ref="sessionRegistry"></beans:constructor-arg>
<beans:property name="maximumSessions" value="1"></beans:property>
<!-- 后登录的用户不能顶替前面已登录的用户 
<beans:property name="exceptionIfMaximumExceeded" value="true"></beans:property>
-->
</beans:bean>

maximumSessions 控制相同用户session数量 exceptionIfMaximumExceeded控制相同用户登录是否顶替已登录用户