GET/api/v1/admin/users/:userId/attempts查看用户登录尝试历史

分页返回目标用户全部登录尝试(成功与失败均留档),含环境指纹哈希。

Request

Headers

NameData TypeRequiredDescription
AuthorizationstringYes会话令牌认证,格式 `Bearer <sessionToken>`
type RequestHeaders = {
  /** 会话令牌认证,格式 `Bearer <sessionToken>` */
  Authorization: string
}

URL Parameters

Name Data Type Description
userId string 用户 ID

Query Parameters

NameData TypeRequiredDescription
pagenumberNo页码,默认 1
pageSizenumberNo每页数量,默认 20,上限 100
statusstringNosatisfied / failed / abandoned
type QueryParams = {
  /** 页码,默认 1 */
  page?: number
  /** 每页数量,默认 20,上限 100 */
  pageSize?: number
  /** satisfied / failed / abandoned */
  status?: string
}
{
  "page": 1,
  "pageSize": 20,
  "status": "satisfied"
}

Response

Body

NameData TypeRequiredDescription
itemsarrayYes尝试列表
totalnumberYes总数
pagenumberYes当前页码
pageSizenumberYes每页数量
type ResponseBody = {
  /** 尝试列表 */
  items: Record<string, unknown>[]
  /** 总数 */
  total: number
  /** 当前页码 */
  page: number
  /** 每页数量 */
  pageSize: number
}
{
  "items": [
    {
      "attemptId": "01JD8ST4UZ9U2WL",
      "status": "satisfied",
      "verifiedFactors": [
        "password",
        "mfa"
      ],
      "score": 100,
      "ip": "203.0.113.24",
      "fingerprintHash": "fp_c41a9e07d2b8",
      "createdAt": "2026-10-14T08:00:00Z"
    }
  ],
  "total": 42,
  "page": 1,
  "pageSize": 20
}

HTTP Code

HTTP Status Meaning Notes
200 成功 返回尝试历史

Response Code

响应使用统一信封 {id, code, messages, result},其 code 字段:

code Meaning Notes
0 成功 返回尝试历史

Examples

GET /api/v1/admin/users/01JD8SEGQ0P9N2XK4L7VDH3T6C/attempts?status=satisfied
Authorization: Bearer st_7c1f9e05b28d4a63
{
  "id": "01JD8ST5VA0V3XM",
  "code": 0,
  "messages": [],
  "result": {
    "items": [
      {
        "attemptId": "01JD8ST4UZ9U2WL",
        "status": "satisfied",
        "verifiedFactors": ["password", "mfa"],
        "score": 100,
        "ip": "203.0.113.24",
        "fingerprintHash": "fp_c41a9e07d2b8",
        "createdAt": "2026-10-14T08:00:00Z"
      }
    ],
    "total": 42,
    "page": 1,
    "pageSize": 20
  }
}