目前存在这样的一个需求,就是一个网站,只允许用户在一个地方登录,目前先只考虑 PC ,不考虑手机端!
比如用户 A 先在电脑 A 上登录了,然后又去电脑 B 上登录,此时电脑 A 上的登录就应该被登出了,这样如何实现啊?
如果用户换了浏览器登录,那么原来浏览器上的登录也应该被登出,和换电脑登录一样的效果!
1
awanabe 2016-04-11 14:38:46 +08:00 1
保存 session , session id 变化就剔除之前所有的 session
|
2
bwangel OP http://stackoverflow.com/questions/235950/how-to-lookup-django-session-for-a-particular-user
找到一个! Gavin Ballard 的答案! |
3
cc7756789 2016-04-11 15:54:26 +08:00
这都不需要插件,直接 hash 一个不会重复字符串作为 session ,传给客户端 cookie 。每次用户登录,提交登录信息表单的路由重新生成 session 给客户端,这样不就把旧机器的 session 挤掉了吗?不过你既然做了登录功能,那依靠 session 应该是很自然的事情啊。难道我的理解错了。
|
4
bwangel OP @cc7756789 ,问题这个 session 是 Django 已经实现好了的,不是我们想用哪个做 Session 就能用哪个啊!
|
5
bwangel OP |
6
neoblackcap 2016-04-11 16:29:30 +08:00
@bwangel 你只要去实现一个 session 的中间件就可以了,将 django 自带的注释掉不就可以了?
|
7
syv2 2016-04-13 22:44:20 +08:00
提供一个参考思路:取客户端的特征,在线维护一个活动客户端状态的列表,当发现有新的客户端活动时,把之前的会话关掉。
|