2016-07-23 87 views
0

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

我也在GitHub上发布了这个问题。

回答

0

一种方法是让cookie通过设置的到期时间戳到达已经通过的日期。

+0

我可以使exp时间戳1天,但如果我在1小时内删除用户,并且用户将登录23小时甚至不存在。 – Pete

+0

我不知道具体如何,但是当您删除用户时,您修改了Cookie的过期时间。 –

1

看看Invalidating JSON Web Tokens

有几种技术,当用户情况已经改变了它的有效期期满前失效一个JWT令牌,你不能没有从localStorage的/ cookie的删除:帐户删除/锁定/暂停,密码改变,改变的权限,用户注销通过管理员:

  1. 令牌黑名单:这是注销之间&到期时间存储令牌,标志过期,检查它的每一个要求。您需要服务器存储。您只能包含该ID或使用发布的时间字段。在上次更新用户之前发布的令牌无效

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

其他常用技术:

  • 允许更改用户唯一的ID,如果帐户与新的用户&密码泄露登录
  • 包含上次登录日期以删除旧令牌
  • 要在用户更改密码时使令牌失效,请使用密码的散列对令牌进行签名。如果密码更改,则以前的令牌将自动无法验证。将此机制与其他感兴趣的领域扩展签署。缺点是它需要访问数据库