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

标签 rest authentication

我们正在设计一个 RESTful 后端服务,它以两种模式列出消息:经过身份验证的和未经身份验证的。如果请求经过身份验证(即,它包含 Authorization header ),则应显示私有(private)消息和公共(public)消息。如果请求未经身份验证,则仅应显示公共(public)消息。

处理包含 Authorization header 但凭据已过期的请求的 RESTful 方式是什么?

  1. 仅列出公共(public)消息;
  2. 返回 401,就好像凭据无效;
  3. 另一个状态代码;哪一个?

我倾向于 401,但这对前端来说有点令人困惑,因为它表明凭据是必需的,而在我们的例子中它们是可选的。是否有某种已知的“可选身份验证失败”的 REST 实践?

最佳答案

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

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

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

关于rest - 无效但可选的凭据的状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32570279/

相关文章:

java - 照片未正确上传 GCS App Engine

java - 如何在 JAVA 中验证多行 JSON 负载

php - SESSION登录易受攻击?

wcf - 在 ASP.NET MVC 项目上使用 Unity 解决 ServiceRoute 中的依赖项

rest - Postman GET 响应二进制文件

python - Django休息框架: Including multiple choice fields in Serializer

.net - 带有确认电子邮件的 ASP.NET 成员资格提供程序

authentication - 身份验证失败后设计日志

python - Django 身份验证/登录问题

java - 如何生成和访问 JWT key