node.js - 使用 express-session ,如何控制一个账号,只能有一个登陆实例?

查看:449
本文介绍了node.js - 使用 express-session ,如何控制一个账号,只能有一个登陆实例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我用express-session 中间件保存用户session信息,现在有一个需求我不知道该怎么实现,就是我怎么才能做到同一个账号,我只允许他有一个登陆实例呢。例如账号a登陆了系统,那么账号a在其他浏览器或机器上登陆系统我就把上次一次账号a的session干掉,不知道具体该怎么做?谁能给我一些指点。

解决方案

这里看你怎么存放用户信息了:

express-session

在浏览器 A 上登陆用户 ua ,分配 sid1, 这时你需要将这个 sid1 与你的登陆的用户相关联, 暂时关系假设为

sid1 <-> uida

现在浏览器B上登陆用户 ua, 这个时候又分配了 sid2, 所以你需要查找你存放的对应关系, 并更新

sid2 <-> uida

这样如果浏览器A再访问你的网站, 这时你需要检查对应关系来判断是否已经登陆

个人理解, 没有验证. 推荐使用 redis 来存放对应关系, 这时有2个关系:

key  |  value
sid  |  userinfo
uid  |  sid

访问服务器, 先检查 sid 得到 uid, 然后根据 uid 来得到正确的 sid, 比较2个sid

这篇关于node.js - 使用 express-session ,如何控制一个账号,只能有一个登陆实例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆