Token 过期:如何在「有 refresh_token」与「没有 refresh_token」下处理?
2023-10-13 09:01:29
Token 无处不在
首先了解 Token 为何如此重要。
Token 被视为锁与钥匙:
- 密钥——私人持有
- 锁——公开可见
而密钥本身又包含:
- 公钥
- 私钥
它们一起能够对信息进行加解密,而 Token 本身就是用公钥加密。
Token 为何会过期
假如将 Token 视作「通行证」,它们为什么会有使用期限呢?
因为长期持有 Token 非常不安全。
具体来讲,假如一道门锁用钥匙解锁,而这把钥匙却始终固定,那么任何人拿到钥匙都能随意进出。为了防止类似情况,会对 Token 设置一个「使用期限」,「期限」的长短依照 Token 种类与应用场景决定。
如何应对 Token 过期
假如 Token 过期,客户端会面临怎样的状况?
这时客户端会收到一则错误信息,表示它无法访问受限资源。
该如何处理这个问题呢?
有两种方法:
- refresh_token :使用 refresh_token 来获取新的 access_token。
- 主动介入 :直接请求用户重新登录。
应对 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 中提取必要的信息。