后端:Node + Express框架
前端:Vue框架
实现功能:
限制同一用户在不同浏览器登陆,解释如下:
例如用户A在PcA处以用户名user进行了登陆,用户B在PcB处以用户名user进行登陆时,浏览器提示用户”user已在另一处登陆,是否踢其下线?”
此时,用户B选择是,则用户A提示下线,用户B上线
当前方案:
利用express-session:用户A登陆后,用户名和密码保存于session和cookie中(session做永久化处理,存储于mongo数据库中),用户B登陆时在数据库中查询是否有user用户,如果有则返回是否踢用户A下线的提示,用户B选择是,则后端主动过期用户A的cookie
我的问题:
- 限制同一用户在不同浏览器登陆的功能,利用session这个方案是否合理?
- 我理解每个浏览器向后端发送请求后,都会形成相应的session保存起来,查询session数据一般是怎样实现的?例如,怎样查询包含”user“的session的”id“
- 怎样实现后端主动向前端发起请求?比如用户A未向后端发起请求的情况下,后端直接修改用户A的cookie,使之过期?
- 如果方案不合理,还请指点,感谢!
楼主的问题
store.destroy(sid, callback)
。怎么限制同个用户不能多个地方同时登录
实现思路楼主应该是有的,只是实现细节不清楚:
楼主不清除的应该是,怎么把 用户名、session id关联起来,包括怎么在有用户名的情况下,查询到该用户名对应的session。
如果用
express-session
,可以这么实现。genid选项:生成session id
genid
返回的是session对应的id,楼主根据实际情况进行自定义。session检测
用户再次登录,通过session id 去检测session是否存在,以此判断用户是否已登录。