返回

Token 过期:如何在「有 refresh_token」与「没有 refresh_token」下处理?

前端

Token 无处不在

首先了解 Token 为何如此重要。

Token 被视为锁与钥匙:

  • 密钥——私人持有
  • 锁——公开可见

而密钥本身又包含:

  • 公钥
  • 私钥

它们一起能够对信息进行加解密,而 Token 本身就是用公钥加密。

Token 为何会过期

假如将 Token 视作「通行证」,它们为什么会有使用期限呢?

因为长期持有 Token 非常不安全。

具体来讲,假如一道门锁用钥匙解锁,而这把钥匙却始终固定,那么任何人拿到钥匙都能随意进出。为了防止类似情况,会对 Token 设置一个「使用期限」,「期限」的长短依照 Token 种类与应用场景决定。

如何应对 Token 过期

假如 Token 过期,客户端会面临怎样的状况?

这时客户端会收到一则错误信息,表示它无法访问受限资源。

该如何处理这个问题呢?

有两种方法:

  1. refresh_token :使用 refresh_token 来获取新的 access_token。
  2. 主动介入 :直接请求用户重新登录。

应对 Token 过期 手段

接下来更详细介绍这两种方法:

refresh_token

假如客户端有 refresh_token,那当 access_token 过期后,它便能利用 refresh_token 换取一个新的 access_token。

需要注意 refresh_token 和 access_token 的使用范围与期限都不同。

refresh_token 过期

refresh_token 也有自己的使用期限,倘若 refresh_token 本身也过期了,那该怎么办?

这时便需要客户端主动介入,要求用户重新登录了。

Token 主动介入

这是另一种处理 Token 过期的方法,也是相对常见的做法。

具体做法:当客户端收到 Token 过期的错误信息时,它会请求用户重新登录。

重新登录后,客户端能获取新的 access_token 和 refresh_token。

Token 被动处理

当 Token 过期,客户端也会进行被动处理:

当客户端发起请求时,服务器检测到 Token 已过期,然后发送错误信息。

收到错误信息的客户端会要求用户重新登录,以便获取新的 Token。

OAuth 2.0 Token 过期

OAuth 2.0 协议中,Token 过期也是常见的处理方式。

它的 access_token 通常设有较短的使用期限,以便在特定时间内访问资源。

JSON Web Tokens 过期

JSON Web Tokens(JWT)是另一种常见的 Token 类型,在许多应用程序中使用。

JWT Token 本身包含有效期信息,一旦过期,服务器便不会再接受它。

Token 解析

有时我们需要对 Token 进行解析,例如从 JWT 中提取有效载荷(payload)。

这时可以使用许多工具来解析 Token,以获得必要的信息。

总结

当 Token 过期时,可以使用 refresh_token 来获取新的 access_token,或主动介入要求用户重新登录。

Token 解析则可以帮助我们从 Token 中提取必要的信息。