我需要使用刷新令牌来获取新的访问令牌,并且该令牌将过期。在前端,在搜索时遇到了两种方法:
使用axios拦截器检查访问令牌是否仍然有效=>如果它不是有效的访问令牌(未过期),则使用refresh-token获取新的访问令牌=>如果获得新的令牌成功=>执行请求。
执行请求=>服务器检查访问令牌=>是否无效,然后将错误代码发送给客户端=>客户端,然后执行请求以获取新的访问令牌=>如果获得新的令牌成功=>重试请求
我不知道哪种方法更好。在我看来,方法1更简单,但检查访问令牌是否有效可能不是客户端的责任。第二种方法对我来说似乎很好,但是在收到新的访问令牌后如何重试请求
答案 0 :(得分:0)
我使用其他变体,假设对后端的每个请求都将重置令牌到期日期时间。在这种情况下,我有流程:
token
有效期(以秒为单位,例如密钥expire_in_seconds
)expire_in_seconds
倒数到0 expire_in_seconds
(当然也在后端)答案 1 :(得分:0)
您可以使用以下方式: Axios具有error.config,这是最后一个请求,被错误捕获。
api.interceptors.response.use(
response => {
...
},
error => {
if (error.response.status === 401) {
refreshToken(YOUR_DATA) // your method to refresh Token
axios.request(error.config).then(response => { // makes the last request that passed with an error
...
})
.catch(error => console.log(error)
}
...
}
);