2013-03-25 90 views

回答

7

401意味着用户是未知的(根本不认证或认证不正确,例如凭证无效)。
403意味着用户是已知的但未被授权(即没有适当的角色/组)。

您也可以将注册但未激活的帐户解释为具有“非活动”和/或缺乏适当角色等特定角色的用户。 403在你的特定情况下更合适。

1

如果您认为尚未被激活的帐户不应被授权,那么该响应肯定有401 Unauthorized状态码。

我认为403 Forbidden也是适当的,是的。但在你的情况下,我认为401未授权更合适。

This answer总结了两种非常好,这报价为401未经授权:

如果请求已经包含了授权证书,那么401响应表示认可已经拒绝了这些凭据。

这当然适用,因为您的情况表明他们提供了凭据,但这些凭据无效,因为该帐户尚未激活(您认为这是未经授权的)。

+2

难道你以前的答案403禁止,更合适吗?由于401假定用户输入了错误的凭证......他们没有。附:你有一个很好的网站 – 2013-03-25 17:23:37

+0

@JohnathanAu也许。但是,我不认为401假设给定的凭证是_wrong_,只是_unauthorized_。 – 2013-03-25 18:13:56

1

@Josh达文波特:你描述了相互授权和身份验证:身份验证是凭据检查,授权是角色/组分配。另一方面,如您在自己评论中所述,401假设认证和授权一次都失败。用户需要同时失败才能获得401. 403用于数据完全禁止的情况,并且根本不需要执行认证。

作为比喻:401 =检查点,其中检查凭证。 403 =停止标志,无法进入。

要回答OP的问题:401在逻辑上是未激活帐户的状态码,但由于它需要HTTP-Auth实现,所以如果您是通过其他方式进行身份验证和授权,则可能会使用403代替它。我个人仍然坚持401,因为标准不一定涵盖所有真实的情况。现在几乎没有人使用HTTP-Auth进行身份验证。