accessToken过期客户端需要发送refresh token时应该给客户端发送哪个状态码

Which status code should be sent to client when accessToken has expired and the client needs to send refresh token

我正在构建一个使用 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)
    }   
})

如果令牌存在但 invalid/expired,我想要求客户端发送刷新令牌。我应该使用哪个状态码。我可以使用 403 表示未授权,但如果令牌刚刚过期,则用户已获得授权但只需要一个新的 token.I 不希望客户端将此 403 状态与当用户实际上没有被授权访问资源时发送一个。

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

401 - 未授权 : 401 - 是客户端请求未完成时使用的状态代码,因为它缺少所请求资源的有效身份验证凭据。

看看这个 resource 一次 :