我目前正在使用 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/