RESTful API return 令牌过期和未授权的不同状态代码或错误消息是否应该?
Should a RESTful API return different status codes or error messages for token expired and unauthorized?
我正在使用身份验证令牌开发 RESTful API。
工作流程简单;客户端执行 /getAuth 请求,发送用户凭据,return 是该用户的令牌。
用户随后将所有以下请求中的令牌作为 header 传递给 API。经过一段时间/调用次数(由服务器决定)后,令牌过期。当在其 header 中带有 expired token 的请求到达服务器时,响应状态为 401 Unauthorized。
在这种情况下,用户必须使用/getAuth 请求另一个令牌,依此类推。
我面临的问题是,当请求因任何其他原因(访问未经授权的资源)而未经授权时,API 也会 returns 401 未经授权。此时,客户端不知道它是否正在尝试访问他无法访问的内容,或者它的用户令牌是否已过期。在不知道的情况下,它会再次请求令牌,并重播相同的请求,从而再次获得 401,依此类推。
所以我的问题是:对于过期令牌,RESTfulAPIreturn是否应该使用与状态和错误不同的状态代码或错误消息return针对未经授权的请求进行编辑,或者客户是否应该找到某种方法来管理该?
我发现 client-side 的解决方案是保存每个请求 url 并且不重试使用新的(刚收到的)令牌失败的请求。但是我觉得很脏。
令牌过期后,客户端不再被授权,因此 returning 401 Unauthorized
header 有意义。
The problem I am facing is that when a request is unauthorized for any other reason (accessing an unauthorized resource), the API also returns 401 Unauthorized. At this point, the client cannot know if it is trying to access something he cannot access, or if its user token is expired.
如果 (authorized) 客户端尝试访问资源但没有适当的权限,您应该 return 403 Forbidden
.
我正在使用身份验证令牌开发 RESTful API。
工作流程简单;客户端执行 /getAuth 请求,发送用户凭据,return 是该用户的令牌。
用户随后将所有以下请求中的令牌作为 header 传递给 API。经过一段时间/调用次数(由服务器决定)后,令牌过期。当在其 header 中带有 expired token 的请求到达服务器时,响应状态为 401 Unauthorized。 在这种情况下,用户必须使用/getAuth 请求另一个令牌,依此类推。
我面临的问题是,当请求因任何其他原因(访问未经授权的资源)而未经授权时,API 也会 returns 401 未经授权。此时,客户端不知道它是否正在尝试访问他无法访问的内容,或者它的用户令牌是否已过期。在不知道的情况下,它会再次请求令牌,并重播相同的请求,从而再次获得 401,依此类推。
所以我的问题是:对于过期令牌,RESTfulAPIreturn是否应该使用与状态和错误不同的状态代码或错误消息return针对未经授权的请求进行编辑,或者客户是否应该找到某种方法来管理该?
我发现 client-side 的解决方案是保存每个请求 url 并且不重试使用新的(刚收到的)令牌失败的请求。但是我觉得很脏。
令牌过期后,客户端不再被授权,因此 returning 401 Unauthorized
header 有意义。
The problem I am facing is that when a request is unauthorized for any other reason (accessing an unauthorized resource), the API also returns 401 Unauthorized. At this point, the client cannot know if it is trying to access something he cannot access, or if its user token is expired.
如果 (authorized) 客户端尝试访问资源但没有适当的权限,您应该 return 403 Forbidden
.