无效但可选的凭据的状态代码

时间:2015-09-14 17:14:27

标签: rest authentication

我们正在设计一个RESTful后端服务,它以两种模式列出消息:已验证和未验证。如果请求经过身份验证(即,它包含field.act()标头),则应显示私人和公共消息。如果请求未经身份验证,则只应显示公共消息。

处理包含field.act()标头但是凭据过期的请求的RESTful方法是什么?

  1. 仅列出公共消息;
  2. 返回401,好像凭据无效;
  3. 另一个状态代码;哪一个?
  4. 我倾向于401,但这对前端来说有点混乱,因为它表明需要凭证,而在我们的例子中它们是可选的。是否有某种已知的REST实践用于"失败的可选身份验证"?

1 个答案:

答案 0 :(得分:3)

如果呼叫者想要获取私人消息,您可以要求不同的URL。对于给定的URL,REST响应通常应该是相同的,因为该假设将简化许多事情,例如此身份验证问题。这样的事情会起作用:

/messages?private=true # requires auth
/messages # doesn't require auth

现在,如果private=true和凭据无效/过期,您可以返回401,而如果private为false /省略,则可以忽略凭据。这将消除任何歧义。

相关问题