Node.js RESTful API是否应该为过期和未授权的令牌返回不同的状态代码或错误消息?

Node.js RESTful API是否应该为过期和未授权的令牌返回不同的状态代码或错误消息?,node.js,api,rest,authentication,restful-authentication,Node.js,Api,Rest,Authentication,Restful Authentication,我正在使用身份验证令牌开发一个RESTful API 工作流程简单;客户端执行/getAuth请求,发送用户凭据,返回该用户的令牌 然后,用户将以下所有请求中的令牌作为头传递给API。经过一段时间/呼叫次数(由服务器决定)后,令牌过期。当标头中包含过期令牌的请求到达服务器时,响应状态为401 Unauthorized。 在这种情况下,用户必须使用/getAuth请求另一个令牌,依此类推 我面临的问题是,当请求由于任何其他原因(访问未经授权的资源)未经授权时,API也会返回401 unauthor

我正在使用身份验证令牌开发一个RESTful API

工作流程简单;客户端执行/getAuth请求,发送用户凭据,返回该用户的令牌

然后,用户将以下所有请求中的令牌作为头传递给API。经过一段时间/呼叫次数(由服务器决定)后,令牌过期。当标头中包含过期令牌的请求到达服务器时,响应状态为401 Unauthorized。 在这种情况下,用户必须使用/getAuth请求另一个令牌,依此类推

我面临的问题是,当请求由于任何其他原因(访问未经授权的资源)未经授权时,API也会返回401 unauthorized。此时,客户机无法知道是否正在尝试访问他无法访问的内容,或者其用户令牌是否已过期。在不知道的情况下,它会再次请求令牌,并重播相同的请求,从而再次获得401,以此类推

因此,我的问题是:对于过期令牌,RESTful API是否应该返回与未经授权请求返回的状态和错误不同的状态代码或错误消息,或者客户端是否应该找到某种方法来管理它


我在客户端找到的解决方案是保存每个请求url,而不是使用新的(刚刚收到的)令牌重试失败的请求。但是我认为它非常脏。

令牌过期后,客户端不再被授权,因此返回
401 Unauthorized
头是有意义的

我面临的问题是,当请求由于任何其他原因(访问未经授权的资源)未经授权时,API也会返回401 unauthorized。此时,客户机无法知道是否正在尝试访问他无法访问的内容,或者其用户令牌是否已过期


如果(授权的)客户端试图访问资源,但没有适当的权限,则应返回
403禁止

对于用户无权访问的路由,您可以返回AccessDenied