在对用户进行身份验证后,我应该回复哪些HTTP状态代码,然后发现他们在注册后没有激活他们的帐户?
答案 0 :(得分:12)
401表示用户未知(未经过身份验证或未正确验证,例如凭据无效) 403表示用户已知但未获得授权(即没有正确的角色/组)。
您还可以将已注册但已停用的帐户解释为具有“非活动”和/或缺少适当角色的特定角色的用户。 403在您的特定情况下更合适。
答案 1 :(得分:1)
如果您认为未经授权的帐户未获得授权,则响应肯定会有401 Unauthorized状态代码。
我认为403 Forbidden也是合适的,是的。但是在你的情况下,我认为401 Unauthorized更合适。
This answer很好地总结了这两个,引用了401 Unauthorized:
如果请求已包含授权凭据,则401响应表示已拒绝授权这些凭据。
这当然适用,因为您的案例表明他们提供了凭据,但由于帐户尚未激活(您认为未经授权),这些凭据无效。
答案 2 :(得分:1)
@Josh Davenport:您描述了彼此的授权和身份验证:身份验证是凭据检查,授权是角色/组分配。
另一方面,正如您在对自己发表的评论中所述,401假设认证和授权都失败了。用户需要失败才能获得401.在数据被完全禁止并且根本不执行/必要的情况下使用403。
作为类比:401 =检查凭据的检查点。 403 =停止标志,无法进入。
要回答OP的问题:401在逻辑上是未激活帐户的状态代码,但由于它需要HTTP-Auth实现,因此如果您通过其他方式进行身份验证和授权,则可以使用403代替它。我个人仍然坚持401,因为标准不一定涵盖所有现实生活中的情况。现在几乎没有人使用HTTP-Auth进行身份验证。