Node.js 每个用户一个会话 [英] Node.js one session per user

查看:78
本文介绍了Node.js 每个用户一个会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何防止我的用户同时从两台设备登录我的系统?所以如果用户从计算机登录,当他从不同的计算机登录时,会话首先会自动关闭(不需要实时).

How can I prevent my users to be logged in my system from two devices same time? So if user logged in from computer, when he logins from different computer, session on first automatically closes (don't need make it realtime).

我使用 node.js、express.js、mongoose、passport、connect-mongo(在数据库中存储会话).

I use node.js, express.js, mongoose, passport, connect-mongo (to store sessions in database).

推荐答案

您可以在用户登录时生成一个令牌,并将其保存在您的数据库中以针对该用户.现在,对于每个请求,您都需要将此令牌发送到服务器.考虑以下场景:

You can generate a token when user logs in and save it in your database against that user. Now with each request you will need to send this token to server. Consider the following scenario:

用户 A 从计算机 A 登录,生成令牌 123 并保存在数据库中.现在每当用户 A 向服务器发送请求时,它首先检查有效的会话,然后从数据库加载用户的令牌以检查其是否有效.

User A logs in from Computer A and a token 123 is generated and saved in database. Now whenever User A sends a request to server, it first checks for a valid session and then loads user's token from database to check if its valid.

现在用户 A 从计算机 B 登录网站,并为用户分配了一个令牌 456,并在数据库中覆盖.下次当用户 A 从计算机 A 发送请求时,服务器会检查有效会话,当它从数据库中获取令牌时,会出现不匹配的情况,表明用户已从其他地方登录,因此当前会话无效.

Now User A logs into the website from Computer B and a token 456 is assigned to the user and is overwritten in database. Next time when User A sends a request from Computer A, server checks for a valid session and when it gets the token from database there is a mismatch indicating that user has logged in from somewhere else so current session is invalid.

这篇关于Node.js 每个用户一个会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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