node.js - 在nodejs中使用json web token一次只允许一个登录

标签 node.js authentication jwt json-web-token

我目前正在使用 json Web token 来验证服务器上的用户身份。现在我希望用户在任何给定时间都应该只有一次事件登录。正如 stackoverflow 上的其他一些答案中提到的,如 this ,这可以通过将生成的 json Web token 存储在数据库表中并在每次用户登录服务器时更新此 token 来轻松完成。每当验证用户身份时,我所要做的就是检查数据库中的 token 。我正在考虑另一种方法。由于我使用 json Web token ,因此我可以为不同的用户使用不同的 secret 并将它们存储在数据库中,而不是存储整个 token 。每当用户登录时,这些 secret 都会更新。因此,在任何时候都只有一个 secret ,并且由于使用任何 secret 的用户都只能解码一个 token (当然在这种情况下),因此只有一个登录将处于事件状态。我想知道这两种方法哪种更好。可以为不同的用户设置不同的 secret 吗?

最佳答案

您不需要将 JWT 存储在数据库中即可执行此操作。只需将唯一的基于时间的值(UUID 或用户登录时间戳)注入(inject)到登录中的 JWT 中,并将该值保存在针对用户的数据库中。每当验证用户身份时,请检查该值与数据库中的值是否相等。如果它们匹配,这意味着帐户尚未从任何其他设备登录,您可以继续。如果不这样做,请向用户发送适当的错误消息。

关于node.js - 在nodejs中使用json web token一次只允许一个登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579513/

相关文章:

security - Multi-Tenancy Azure AD 非管理员登录

iOS 对 Web 服务器的身份验证

laravel-5.2 - Laravel 5.2基于 token 的身份验证与JWT

php - 在创建 JWT token 期间了解 RS256 和 SHA256

node.js - NGINX : How to have sticky session with least connected

javascript - 异步函数完成时如何停止终端运行

javascript - 无法在测试文件中实例化来自 npm build 的 Browserify 结果

c# - 在 ASP.NET Core 中访问 _Layout.cshtml 中的 cookie

javascript - 使用 Axios post 请求进行 JWT 授权

node.js - 如何从 Node.js 中执行外部程序?