在对用户进行身份验证并发现他们在注册后没有激活其帐户后,应该响应哪个HTTP状态代码?未激活帐户的HTTP状态码?
7
A
回答
7
401意味着用户是未知的(根本不认证或认证不正确,例如凭证无效)。
403意味着用户是已知的但未被授权(即没有适当的角色/组)。
您也可以将注册但未激活的帐户解释为具有“非活动”和/或缺乏适当角色等特定角色的用户。 403在你的特定情况下更合适。
1
如果您认为尚未被激活的帐户不应被授权,那么该响应肯定有401 Unauthorized状态码。
我认为403 Forbidden也是适当的,是的。但在你的情况下,我认为401未授权更合适。
This answer总结了两种非常好,这报价为401未经授权:
如果请求已经包含了授权证书,那么401响应表示认可已经拒绝了这些凭据。
这当然适用,因为您的情况表明他们提供了凭据,但这些凭据无效,因为该帐户尚未激活(您认为这是未经授权的)。
1
@Josh达文波特:你描述了相互授权和身份验证:身份验证是凭据检查,授权是角色/组分配。另一方面,如您在自己评论中所述,401假设认证和授权一次都失败。用户需要同时失败才能获得401. 403用于数据完全禁止的情况,并且根本不需要执行认证。
作为比喻:401 =检查点,其中检查凭证。 403 =停止标志,无法进入。
要回答OP的问题:401在逻辑上是未激活帐户的状态码,但由于它需要HTTP-Auth实现,所以如果您是通过其他方式进行身份验证和授权,则可能会使用403代替它。我个人仍然坚持401,因为标准不一定涵盖所有真实的情况。现在几乎没有人使用HTTP-Auth进行身份验证。
相关问题
- 1. HTTP状态代码注册新帐户
- 2. 如何激活保持活动状态,http://www.webpagetest.org表示保持活动状态未激活
- 3. 删除所有未激活的帐户
- 4. 帐户激活PHP
- 5. AdMob将状态显示为未激活
- 6. Apache JKmanager激活状态未更新
- 7. PHP帐户激活逻辑
- 8. Authlogic帐户激活轨道
- 9. PHP帐户激活问题
- 10. 如何激活AdSense帐户?
- 11. 用户帐户激活的Wordpress Hook
- 12. Twilio客户端js状态繁忙/取消未激活
- 13. 如何在用户点击激活链接后激活帐户?
- 14. HTTP状态码和json内容的帐户限制?
- 15. 激活状态栏中
- 16. 注册后激活用户帐户
- 17. 取消激活postgres用户帐户
- 18. 如果帐户处于活动状态,Rails将验证状态
- 19. 我们有激活您的帐户
- 20. 错误HTTP 404.11传递帐户激活令牌querystring
- 21. Facebook access_token未激活,重试变为活动状态
- 22. “EULA未被接受”的HTTP状态码?
- 23. 未解决url的HTTP状态码
- 24. 激活链接首次被点击时如何激活帐户?
- 25. 多商店,prestashop手动激活帐户
- 26. 帐户激活时出错django_registration_email
- 27. 从GCloud激活服务帐户
- 28. IdentityServer:帐户激活后登录
- 29. 如何重新激活Facebook帐户?
- 30. 取消激活帐户不工作
难道你以前的答案403禁止,更合适吗?由于401假定用户输入了错误的凭证......他们没有。附:你有一个很好的网站 – 2013-03-25 17:23:37
@JohnathanAu也许。但是,我不认为401假设给定的凭证是_wrong_,只是_unauthorized_。 – 2013-03-25 18:13:56