未激活帐户的HTTP状态代码是什么?

未激活帐户的HTTP状态代码是什么?,http,httpresponse,http-status-codes,Http,Httpresponse,Http Status Codes,在对用户进行身份验证,然后发现他们在注册后没有激活他们的帐户后,我应该使用哪个HTTP状态代码进行响应?如果您认为未激活的帐户不应该被授权,那么响应肯定应该有一个状态代码 我认为a也很合适,是的。然而在你的情况下,我认为401更合适 很好地总结了这两个方面,引用了以下内容: 如果请求已包括授权凭据,则401响应表示已拒绝这些凭据的授权 这当然适用,因为您的案例表明他们提供了凭据,但这些凭据无效,因为帐户未被激活(您认为未经授权)。401表示用户未知(根本未经身份验证或身份验证不正确,例如,凭据无

在对用户进行身份验证,然后发现他们在注册后没有激活他们的帐户后,我应该使用哪个HTTP状态代码进行响应?

如果您认为未激活的帐户不应该被授权,那么响应肯定应该有一个状态代码

我认为a也很合适,是的。然而在你的情况下,我认为401更合适

很好地总结了这两个方面,引用了以下内容:

如果请求已包括授权凭据,则401响应表示已拒绝这些凭据的授权


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

401表示用户未知(根本未经身份验证或身份验证不正确,例如,凭据无效)。
403表示用户已知但未授权(即没有适当的角色/组)


您还可以将已注册但未激活的帐户解释为具有特定角色(如“未激活”和/或缺少适当角色)的用户。403更适合您的具体情况。

@Josh Davenport:您描述了授权和身份验证,而这两种方式是相互替代的:身份验证是凭证检查,授权是角色/组分配

另一方面,正如您在对自己的评论中所述,401假设身份验证和授权一次失败。用户需要同时失败才能获得401。403用于完全禁止数据和根本不执行/不需要身份验证的情况

作为类比:401=检查凭证的检查点。403=停止标志,不能进入


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

您以前的答案403 Forbidden不是更合适吗?因为401假设用户输入了错误的凭据…但他们没有。顺便说一句,你有一个漂亮的website@JohnathanAu也许。然而,我不认为401假设给定的凭证一定是错误的,只是未经授权。