同一个网站,同一账号,不允许同时同时登录,这个功能怎么做?
发布于 7 年前 作者 rosencai 9057 次预览 最后一次回复是 7 年前 来自 问答
在一个网站下,同一个账号如果已经登录,在另一个客户端登录的时候,提醒账号已登录,禁止当前客户端再次登录,还有session在这种情况下为什么总是空的
//下面是登录成功后创建session,但是在这之前取session,即使已有账号登录,session总是空的,难道要用数据库记录登录状态吗
req.session['admin_id'] = req.body.username;
res.send('登录成功,将跳转至默认页<script>setTimeout(function(){location.href="/admin/classMgmt"},1000)</script>').end();
9 回复
查询单点登陆
这应该不是单点登录的场景。一般的session是基于cookie的 没登录的时候没有cookie自然session就是空的,你说的情况可以使用websocket,在连接建立的时候用用户名来置标记位,连接断开的时候清除标记位;我觉得最好的做法是账号在异地登录的时候,挤掉当前登录的账号,清空其session,使其重新登录,而不是一个账号登录了以后就不能在别的客户端登录。
看到 https://github.com/agenda/agenda 这个库,试试,流量多还是用 rabbitmq 吧,毕竟 erlang 开发的,分布式支持。
做个推送。。所前面用户退出
以前我是透過 對 ip 及 瀏覽器 資訊等等之類 做一個 hash
如果發現 hash 不一樣就登出
这种情况只有websocket的场景能应用的比较好吧
需要把用户登录的session信息记录到数据库,登录时查询是否登录已存在。放cookie肯定不行,cookie只有客户端知道,服务器没有这个信息(只能在客户端请求时被动得到,无法主动查询)。
✨来自Awehunt开源项目精选
如果是用token来做,只有一个token有效就可以了
来自酷炫的 CNodeMD