单点登陆--同一个帐户只能在一台电脑(同一IP)上登陆
2012-09-10 16:18
423 查看
今天群里又在讨论同一个帐户只能在一台电脑上登陆
我把之前我做过的思路说一下 供大家参考
单点登陆本意是用户只需要登录一次就可以访问所有相互信任的应用系统。简单的说就是比如这个域名登陆后,其他的域名可以不用再重复登陆,比如我登陆了QQ空间,可以直接输入邮箱的地址,而不用重新登录。
当初我在网上搜的时候也挺纳闷,同一个帐户只能在一台电脑(同一IP)上登陆对于我来说就叫单点登陆,所以搜的时候没搜到想要的。
好吧,不废话了,说解决思路。
1.在用户登陆的时候,把用户的id和当前时间的long值(其他什么值也可以)存到application的map(存到全局的静态变量也可以,不是非要application)里面去。
2.同时把用户的信息存到session里面去。
3.用户发起请求的时候filter过滤取 session里面的用户的long值和根据用户的id在application里面取到的long值进行比较。相等,则有效。不相等,则说明已经在另外一个地方登录,当前session就失效,然后自己做自己的业务处理。
例如:
User实体有id,passwd字段
那么我额外给User实体再加上一个time 字段(用于存等于登陆时候的时间的long值)
User
id为1
passwd为123456
第一次登陆成功时得到当前时间的long值1347264831311
把这个long值set到User然后把整个User保存到session
同时把这个long值和id:1存到application的一个全局map
id为key long为value
此时application里面的long和当前session里的long是相等的
session有效
第二次用户再次用 id为1密码为123456的帐号登陆成功时,会把当前的时间long值如1347265230674存到a
pplication的map中,key为1的value就被改写成本次登陆时候的时间long值1347265230674
那么第一次登陆的那个用户的session里面取到的User的time就和application里面的就不相等了,则此时session就失效了。
然后你就可以做相应的业务处理了...
我把之前我做过的思路说一下 供大家参考
单点登陆本意是用户只需要登录一次就可以访问所有相互信任的应用系统。简单的说就是比如这个域名登陆后,其他的域名可以不用再重复登陆,比如我登陆了QQ空间,可以直接输入邮箱的地址,而不用重新登录。
当初我在网上搜的时候也挺纳闷,同一个帐户只能在一台电脑(同一IP)上登陆对于我来说就叫单点登陆,所以搜的时候没搜到想要的。
好吧,不废话了,说解决思路。
1.在用户登陆的时候,把用户的id和当前时间的long值(其他什么值也可以)存到application的map(存到全局的静态变量也可以,不是非要application)里面去。
2.同时把用户的信息存到session里面去。
3.用户发起请求的时候filter过滤取 session里面的用户的long值和根据用户的id在application里面取到的long值进行比较。相等,则有效。不相等,则说明已经在另外一个地方登录,当前session就失效,然后自己做自己的业务处理。
例如:
User实体有id,passwd字段
那么我额外给User实体再加上一个time 字段(用于存等于登陆时候的时间的long值)
User
id为1
passwd为123456
第一次登陆成功时得到当前时间的long值1347264831311
把这个long值set到User然后把整个User保存到session
同时把这个long值和id:1存到application的一个全局map
id为key long为value
此时application里面的long和当前session里的long是相等的
session有效
第二次用户再次用 id为1密码为123456的帐号登陆成功时,会把当前的时间long值如1347265230674存到a
pplication的map中,key为1的value就被改写成本次登陆时候的时间long值1347265230674
那么第一次登陆的那个用户的session里面取到的User的time就和application里面的就不相等了,则此时session就失效了。
然后你就可以做相应的业务处理了...
相关文章推荐
- 如何限制一台电脑只能登陆一个QQ帐号
- 限制一个帐户不能同时登陆。(针对于不是同一台计算机)
- 同一时间同一帐号只能登陆在一台电脑
- 同一个QQ号码在同一台电脑上无限登陆(加快你的升级速度)哦
- 同一个QQ号码在同一台电脑上无限登陆(加快你的升级速度)
- 让一台电脑只能上一个QQ的方法
- 问题记录:同一台电脑上,两台Tomcat运行同样的webapp项目,只能一个启动成功
- 如何做到 每个帐户只能同时登陆一台客户机
- jfinal+H5的websocket 实现同一账户在不同地点不同电脑只能登陆一个(互相踢下线)
- 通过Process使应用程序在一台电脑上只能有一个在运行
- 老男孩视频纠错:一台电脑只能与biadu建立一个tcp链接
- 一台电脑只能启动一个客户端。——Mutex 类的简单运用
- 如何让一台电脑只能访问某一个网站?
- web系统怎么识别登陆的帐户是同一台电脑登陆 用户绑定电脑
- c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)
- web系统怎么识别登陆的帐户是同一台电脑登陆 用户绑定电脑
- c#实现一个程序在一台电脑上只运行一个实例
- asp实现限制一个ip只能访问一次的方法
- 几台电脑同时使用一个无线路由器上网,外部ip相同,各个电脑内部ip不同,路由器如何区分某个数据包是发给某个电脑的?
- 解决Mysql中只能通过localhost登陆不能通过ip登陆的问题