JsonWebToken用户身份验证问题

时间:2016-07-23 16:59:56

标签: javascript mean-stack jwt express-jwt

我有一个用于用户身份验证的应用程序,我遇到了这个问题,我有用户登录并在cookie中存储了JWT(JsonWebToken)。我在验证用户后存储了cookie。接下来,我作为管理员,在他/她仍然登录时从数据库中删除该用户。自用户仍然被记录,用户在浏览器中有一个有效的JWT,所以它仍然认为它存在,因为我的方式验证用户是否通过webtoken登录。我一直在考虑如何解决这个问题,但我还没有想出任何东西。

我还在GitHub上发布了此问题。

2 个答案:

答案 0 :(得分:1)

查看Invalidating JSON Web Tokens

当用户情况发生变化并且您无法从localStorage / cookie中删除时,有几种技术可以使JWT令牌在其到期之前失效:帐户已删除/阻止/暂停,密码已更改,权限已更改,用户已由管理员注销:

  1. 令牌黑名单:存储退出和退出之间的令牌到期时间,标记已过期并在每个请求中检查。您需要服务器存储。您只能包含ID或使用已发布的时间字段。在上次更新用户之前签发的令牌将无效

  2. 到期时间短并旋转它们。每隔几个请求发一个新的。问题是在没有请求时维护用户记录(例如关闭浏览器)

  3. 其他常用技巧:

    • 如果帐户受到新用户和密码登录
    • 的影响,则允许更改用户唯一ID
    • 包含删除旧令牌的上次登录日期
    • 要在用户更改密码时使令牌无效,请使用密码哈希对令牌进行签名。如果密码更改,则以前的任何令牌都将自动无法验证。使用其他感兴趣的字段扩展此机制以进行签名。缺点是它需要访问数据库

答案 1 :(得分:0)

一种方法是通过将其到期时间戳设置为已经过去的日期来使cookie过期。

相关问题