初用JWT,请教更新 token 的合适时机

我初用 Node 做后台,使用了 JWt,因为欠缺经验,有些疑惑,想请教大家。

token 包含内容:

{
    id,
    username,
    avatar,
    email
  }

目前后台会在以下情况返回新的 token:
注册、登陆、修改资料。

用户修改头像不需要二步验证,所以只要有 token 就行。
现在我在想,如果用户的 token 被盗的话,窃贼可以依据 token 修改头像,并获得新的合法 token,只要其在过期时间(1小时)内修改一次,他就一直可以使用这个用户的身份。

如果修改资料时不更新 token 的话,token 过期后就只能重新登陆获取 token,这样是不是更安全呢?

在实际使用中,除了登陆注册,应不应该让其他一些操作也可以获得新的 token 呢?如果有的话,有哪些情景呢?求教,谢谢大家~

阅读 3.1k
3 个回答
  1. 修改资料不应该刷新 token
  2. 可以使用OAuth2.0里设计的 refresh_token 来单独刷新 token。

登录时返回 token 和 refresh_token ,token 过期则使用 refresh_token 请求重新生成 token 和 refresh_token。如果 refreh_token 也过期,则重新登录。其它时候不应该更新 token

其实你应该关注客户端和服务器之间通信的安全性,确保客户端发送的数据在传输过程中不被截取。
客户能拿到token就说明是可信赖的,如果是客户自己泄露的,那没办法避免了,那你只能调整鉴权方式以确保泄露的token尽可能快速失效。这个也和JWT功能没啥太大关系了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题