首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

单点登录有关问题,1个账号只能在1个地方登录,如何做

2013-09-28 
单点登录问题,1个账号只能在1个地方登录,怎么做?现在做项目碰到一个问题,就是想 1个账号只能在1个地方登录

单点登录问题,1个账号只能在1个地方登录,怎么做?
现在做项目碰到一个问题,
就是想 1个账号只能在1个地方登录,
第一个人用这个账号在1台电脑登陆后
第二个人用这个账号在另1台电脑登录

这时如果第1个人再看一些登陆后才能看的页面,就会显示 此账号已经有人在别处登录。然后自动退出

请高手们讲一下 具体的原理。谢谢了
[解决办法]
超简单的问题,我们在用户表那儿添加多一个INT列,这个专门放随机数,每登陆一次,随机数就变化一次,并将随机数放在cookies或seeion中,每每读取和数据库的作对比,如果发现不对,就说明,别人己在另一个地方登陆了,这时就弹出“己在另一地方登陆”,然后关闭窗口,这样就行了。
[解决办法]

引用:
系统中一个LoginSession表(sessionId,UserId,ip,expireDate)

登录成功后,检查单点登录策略,如果当前是不允许多个地方登录,那么就清空LoginSession中当前UesrId的记录。同时,把当前Session记录起来,同时返回一个token{sessionId,userId}给客户端。

每次和服务端的请求,都要到LoginSession中校验这……


我的回复怎么没有楼主反馈?楼主看不懂,还是不屑于看?

我的解决方案是支持多网站SSO应用的
[解决办法]
引用:
引用:
超简单的问题,我们在用户表那儿添加多一个INT列,这个专门放随机数,每登陆一次,随机数就变化一次,并将随机数放在cookies或seeion中,每每读取和数据库的作对比,如果发现不对,就说明,别人己在另一个地方登陆了,这时就弹出“己在另一地方登陆”,然后关闭窗口,这样就行了。


这个好像可行,不过要频繁读取用户表啊!!是不?


把字段在登陆时存在session里,在对比,存个登陆时间对比就行了
[解决办法]
单点登录只有一个数据库,其中某个表来存储用户登录的状态,可以将之做成一个WebService

每次有用户登录从该service返回一个识别码,
如A用户登录返回识别码:myuser001
B用户登录返回一个识别码:myuser002

此时A用户访问其他需要验证Session的页面时,返回了验证码myuser002(最后一次用户登录的识别码),与A用户登录时返回的验证码myuser001不一致,就把A用户踢出系统

具体细节需要你自己考虑

热点排行