看看,我策划的《单点登录方案》是否完美!
口述伪代码:
登录以后保存登录信息进入若干个cache--保存有电脑名,IP,会话时间...
每个用户都建立唯一的cache,其中一个(用户名+alive)的cache是保存最近一次会话时间的。
它通过AJAX定时刷新的,10秒更新一次(支持通过设置修改)
用AJAX定时刷新cache保存有最近一次会话时间,能有效的识别用户电脑死机,停电,直接关闭浏览器,网线接触不良等等极端的意外离线
后影响下次登录。
用电脑名和IP联合判断避免同局域网(网吧、公司)里面不同电脑当一个人看待的错误。
场景:
当用户用户名admin在A点登录,用了一下就关浏览器了,但是想想还有些工作没有作。再次登录,系统使用cache判断电脑名,IP是一
样的时候,就进行密码验证。
当用户名admin在A点登录并保持在线的时候,有人在B点用用户名admin登录,系统通过Admin_Alive的Cache比较系统当前时间相差的
时间在10秒以内的时候,拒绝B点登录请求。
当用户名admin在A点登录并保持在线的时候,有人在B点用用户名admin登录,系统通过Admin_Alive的Cache比较系统当前时间相差的
时间大于10秒,执行B点登录请求,就进行密码验证。
在电脑甲用admin登录(登录成功),又在电脑乙用admin登录。系统使用cache判断电脑名,IP是不一样的时候拒绝登录。
....
缺点:用户过多的时候服务器保存cache量、定时刷新,可能令某些服务器负担重。
优点:支持意外掉线的识别。
允许误差:A点登录成功,后来网线被流星炸断了,他打电话给交待其他人帮忙,人家在别的地方帮他干活。
后来抢修完成以后,他自己继续用工作。这个时候因为只有在登录检查状态,进入系统以后不检查,COOKIE依然生效使他继续合法的操作。
修正误差:如果系统应用在比较严格的应用环境上,检查状态跟检查权限同步进行。