SSH 实现单点登录

时间:2021-04-18 17:14:04
SSH开发,已经有一个spring的listener了。
如何再写一个listener,实现用户登录的时候,将用户id放入application中。
如果同一账号在别处登录,检查application中是否存在,如果已经存在这个ID,将之前登录这个session注销掉(踢掉)。
论坛里面有关于这个讨论的。我看了,但是按照那个说法写了,总是报错。
思路已经有了,但是还是写不出来,希望各位大大们帮忙看看。
不明白的:
1、application创建的时候,要放什么进去?类型是什么?TreeSet?还是Map?
2、如何知道用户登录成功了,将id放进application中。session创建的时候是用户访问首页就创建了,但是怎么知道他登录成功了呢?loginAction中编写?

8 个解决方案

#1


用框架吧,比如CAS或者http://www.blogjava.net/xcp/archive/2010/04/13/318125.html

#2


第一次登陆时,将session和登陆状态保存数据库,再次登陆时就销毁原session和修改登陆状态,退出时也销毁该session

还需要一个定时器去定时检查该用户是否在处于登陆状态(为了避免用户直接通过关闭浏览器等手段直接退出系统)

#3


引用 1 楼 fangmingshijie 的回复:
用框架吧,比如CAS或者http://www.blogjava.net/xcp/archive/2010/04/13/318125.html
目前只有一个项目,也比较小,用CAS这种东西还要去研究,我现在只想解决目前的问题,尽快避免重复登录就可以了。

#4


那你可以这样试试,在表内设置一个标志位比如isLogin字段,登录成功就设置为1,退出或者关闭浏览器就设置为0,登录前先判断isLogin的值就行了,如果为1,就说明有人登录,你再考虑如何让它掉线。

#5


引用 4 楼 fangmingshijie 的回复:
那你可以这样试试,在表内设置一个标志位比如isLogin字段,登录成功就设置为1,退出或者关闭浏览器就设置为0,登录前先判断isLogin的值就行了,如果为1,就说明有人登录,你再考虑如何让它掉线。
关键问题就是如何踢掉。

#6


ajax后去去这个字段。设置session过期就掉线了。

#7


楼主,不知道你这项目完成没有,我有个问题想请教下你?

#8


单点登录跟SSO有毛线关系,CAS好 但是要集成 PHP .NET ASP 等WEB项目怎么办?

我的意思是了解清楚SSO原理 搞一套 反正是验证那十几个步骤 又不复杂。

#1


用框架吧,比如CAS或者http://www.blogjava.net/xcp/archive/2010/04/13/318125.html

#2


第一次登陆时,将session和登陆状态保存数据库,再次登陆时就销毁原session和修改登陆状态,退出时也销毁该session

还需要一个定时器去定时检查该用户是否在处于登陆状态(为了避免用户直接通过关闭浏览器等手段直接退出系统)

#3


引用 1 楼 fangmingshijie 的回复:
用框架吧,比如CAS或者http://www.blogjava.net/xcp/archive/2010/04/13/318125.html
目前只有一个项目,也比较小,用CAS这种东西还要去研究,我现在只想解决目前的问题,尽快避免重复登录就可以了。

#4


那你可以这样试试,在表内设置一个标志位比如isLogin字段,登录成功就设置为1,退出或者关闭浏览器就设置为0,登录前先判断isLogin的值就行了,如果为1,就说明有人登录,你再考虑如何让它掉线。

#5


引用 4 楼 fangmingshijie 的回复:
那你可以这样试试,在表内设置一个标志位比如isLogin字段,登录成功就设置为1,退出或者关闭浏览器就设置为0,登录前先判断isLogin的值就行了,如果为1,就说明有人登录,你再考虑如何让它掉线。
关键问题就是如何踢掉。

#6


ajax后去去这个字段。设置session过期就掉线了。

#7


楼主,不知道你这项目完成没有,我有个问题想请教下你?

#8


单点登录跟SSO有毛线关系,CAS好 但是要集成 PHP .NET ASP 等WEB项目怎么办?

我的意思是了解清楚SSO原理 搞一套 反正是验证那十几个步骤 又不复杂。