当 accessToken 已过期且客户端需要发送刷新令牌时,应该向客户端发送哪个状态码

Posted

技术标签:

【中文标题】当 accessToken 已过期且客户端需要发送刷新令牌时,应该向客户端发送哪个状态码【英文标题】:Which status code should be sent to client when accessToken has expired and the client needs to send refresh token 【发布时间】:2022-01-02 16:28:16 【问题描述】:

我正在构建一个使用 jwt 进行身份验证的 API。我使用中间件来解码令牌并在每条路由之前设置 req.user。

app.use(async (req, res, next)=>
    const token = req.headers.accessToken;
    if(!token)
        req.user = undefined;
        next()
    
    try
        const user = await jwt.verify(token, SECRET)
        req.user = user
        next()
    catch(err) // token present but invalid
        res.status(which status to use?).json(err)
       
)

如果令牌存在但无效/过期,我想要求客户端发送刷新令牌。我应该使用哪个状态码。我可以使用403,这意味着未经授权,但如果令牌刚刚过期,则用户已获得授权但只需要一个新令牌。我不希望客户端将此403 状态与用户发送时发送的状态混淆实际上无权访问资源。

由于我无法在 google 上找到答案,我怀疑这不是处理令牌的方式。有没有更好的办法?

【问题讨论】:

401 未经授权 好的,谢谢。这是验证令牌的标准方法吗? developer.mozilla.org/en-US/docs/Web/HTTP/Status 【参考方案1】:

401 - Unauthorized:401 - 是在客户端请求由于缺少所请求资源的有效身份验证凭据而未完成时使用的状态代码。

看看这个resource 一次:

【讨论】:

以上是关于当 accessToken 已过期且客户端需要发送刷新令牌时,应该向客户端发送哪个状态码的主要内容,如果未能解决你的问题,请参考以下文章

通过appId和appSecret生成accessToken访问api后端接口(接口授权)

检查 accesstoken 是不是过期 Facebook SDK 4.7 ios

Google 令牌刷新返回“令牌已过期或撤销”。

Token是啥意思 token过期怎么办

腾讯先锋怎么解决token过期

Token过期处理