2017-07-27 65 views
0

我发现很多HTTP状态代码的含义的答案和解释。我的问题具体是关于POST请求到登录端点,例如要求输入用户名和密码以及提供错误提示的场景。REST API返回登录请求时使用错误凭据执行的状态码是什么?

的几点思考:

400错误响应 我觉得这个代码是不恰当的,因为它说的请求是语法不正确,而不是由服务器,这是不是这里的情况了解。登录数据在语义上不正确。

401未授权 这是我的棘手部分。 如果401只能发生在需要认证头的请求上,那么这是不正确的。但是,如果401可能发生在所有需要认证的请求上(无论是作为头还是身体),那么401就是候选人。

403禁止 通常情况下,如果用户已经被验证和系统已知的,但所请求的资源,他将返回403 /她是不允许访问。 登录前,用户肯定没有通过身份验证。我不知道403是否有未经认证的用户的语义。

我很高兴被告知答案或听到您的想法。

+0

你写的所有内容似乎都是正确的,我没有看到任何问题 –

+0

问题出在标题 –

+0

抛出他们的茶壶错误。为什么给黑客任何信息? – Will

回答

1

我的问题具体是关于POST请求登录端点,例如要求输入用户名和密码以及提供错误提示的情况。

这取决于凭据的发送方式:

  • 如果您正在使用HTTP Authentication(在Authorization头发送凭据),您可以返回401,表明凭证无效。

  • 如果您发送的请求主体(例如用户名和密码JSON)证书,401似乎不是最适合的状态代码(一旦它不是一个真正的HTTP认证)。在这种情况下,请考虑使用403,而不要使用描述性响应负载。


403状态代码也可以被用来指示授权问题,那就是,以指示不允许用户执行动作。

1

无效凭证401当使用HTTP认证

403用户登录,但尝试访问不允许

+0

_'401' for invalid credentials_不太准确。它应该是:'401'表示无效凭证_when使用[HTTP认证](https://tools.ietf.org/html/rfc7235)_ –

+1

True! Thanx,Cássio我已经更新了答案以澄清。 –

1

如果用户尝试验证区域,但提供了无效的凭证,响应应该无论您是否使用基本授权,都具有401的状态。 401表示身份验证失败,但用户可以更改其请求并再次尝试。

如果用户通过身份验证但未被授权访问请求的资源,则响应应具有403的状态.403指示用户被禁止访问资源,并且无论他们如何更改请求,他们将不被允许访问。

在端点需要证书位于请求正文(我建议不要)的情况下,如果请求正文不符合您的规范,则应返回400。但是,我强烈建议您使用标头字段来传递凭据。

相关问题