POST/api/v1/auth/login/password手机号 / 邮箱 / 用户名 + 密码登录
Try it 面板需要启用 JavaScript。
验证密码因素(默认 40 分)。密码正确但分数未达阈值时返回尝试工单与可选的下一因素,由前端继续编排。
Request
| Name | Data Type | Required | Description |
| Content-Type | string | Yes | 请求体内容类型(默认值 "application/json") |
type RequestHeaders = {
/** 请求体内容类型,默认值 "application/json" */
Content-Type: string
}
{
"Content-Type": "application/json"
}
Body
| Name | Data Type | Required | Description |
| identifier | string | Yes | 手机号 / 邮箱 / 用户名 |
| password | string | Yes | 登录密码 |
| captchaTicket | string | No | 验证码已验证工单(需要时携带,captcha 因素 20 分) |
type RequestBody = {
/** 手机号 / 邮箱 / 用户名 */
identifier: string
/** 登录密码 */
password: string
/** 验证码已验证工单(需要时携带,captcha 因素 20 分) */
captchaTicket?: string
}
{
"identifier": "chenlin",
"password": "J8v#pQ2mXs!a",
"captchaTicket": "cpv_5e02ab71d3890f64"
}
Response
Body
| Name | Data Type | Required | Description |
| status | string | Yes | pending 未达标 / satisfied 已达标并签发会话 |
| attemptTicket | string | No | 尝试工单;pending 时必返,后续因素验证继续携带 |
| nextFactors | array | No | pending 时按配置仍可选的因素 |
| sessionToken | string | No | 会话令牌(不透明);satisfied 时返回 |
| refreshToken | string | No | 刷新令牌;satisfied 时返回 |
| sessionId | string | No | 会话 ID;satisfied 时返回 |
| expiresAt | string | No | 会话过期时间;satisfied 时返回 |
type LoginResultDTO = {
/** pending 未达标 / satisfied 已达标并签发会话 */
status: string
/** 尝试工单;pending 时必返,后续因素验证继续携带 */
attemptTicket?: string
/** pending 时按配置仍可选的因素 */
nextFactors?: string[]
/** 会话令牌(不透明);satisfied 时返回 */
sessionToken?: string
/** 刷新令牌;satisfied 时返回 */
refreshToken?: string
/** 会话 ID;satisfied 时返回 */
sessionId?: string
/** 会话过期时间;satisfied 时返回 */
expiresAt?: string
}
{
"status": "pending",
"attemptTicket": "atk_9f2c7be14d0a53e8",
"nextFactors": [
"otp",
"mfa",
"captcha"
]
}
HTTP Code
| HTTP Status |
Meaning |
Notes |
| 200 |
成功 |
达标时直接签发会话;未达标返回尝试工单 |
| 401 |
凭据错误 |
用户名或密码错误 |
| 403 |
账号被冻结 |
管理员已冻结该账号 |
Response Code
响应使用统一信封 {id, code, messages, result},其 code 字段:
| code |
Meaning |
Notes |
| 0 |
成功 |
返回登录结果 |
| 2001 |
用户名或密码错误 |
凭据不匹配 |
| 2002 |
账号被冻结 |
管理员已冻结该账号 |
| 2102 |
验证码工单无效 |
captchaTicket 无效或已消费 |
Examples
POST /api/v1/auth/login/password
Content-Type: application/json
{
"identifier": "chenlin",
"password": "J8v#pQ2mXs!a",
"captchaTicket": "cpv_5e02ab71d3890f64"
}
{
"id": "01JD8SH2P7N4M8WX",
"code": 0,
"messages": [],
"result": {
"status": "satisfied",
"sessionToken": "st_7c1f9e05b28d4a63",
"refreshToken": "rt_46a9c7e015283d5b",
"sessionId": "01JD8SEGVK6MZ7W3Q4RT5N8YB2",
"expiresAt": "2026-11-13T08:00:00Z"
}
}
首次因素验证时懒创建尝试并绑定环境指纹;后续所有因素验证必须携带同一指纹,不匹配的合并请求被拒绝(2008)。