前端鉴权场景:用户名/密码错误对应的HTTP状态码咨询
用户名/密码错误的HTTP状态码及字段错误标识方案
从HTTP标准和实际开发实践来看:
状态码选择
无论是用户名不存在还是密码错误,都统一返回 401 Unauthorized。这是因为两者都属于「身份凭证无效」的范畴,完全符合401状态码的语义——请求需要有效的用户身份验证凭证,当前提供的凭证无法通过校验。明确具体错误字段
HTTP状态码本身无法区分具体是哪个字段出错,需要在响应体中通过自定义字段来传递详细信息,例如:- 用户名不存在时,响应体示例:
{ "code": "INVALID_USERNAME", "message": "用户名不存在", "field": "username" } - 密码错误时,响应体示例:
{ "code": "INVALID_PASSWORD", "message": "密码错误", "field": "password" }
- 用户名不存在时,响应体示例:
安全注意事项
如果业务需要防范暴力枚举攻击(比如攻击者批量猜测有效用户名),建议不要明确区分错误类型,统一返回「用户名或密码错误」的模糊提示,避免泄露用户存在性信息。
内容的提问来源于stack exchange,提问作者Min Min Chit
相关产品推荐
相关产品推荐

