跳到正文
MuoCeon 文档中心
v1auth 上下文

会话

读取当前会话、列出全部会话、踢掉其他设备或指定会话。

会话端点全部要求会话令牌(受众 auth)。令牌解析、签名校验、会话存活判定与认证强度判定都在服务端统一完成,客户端不需要自己解码令牌。

端点

方法路径说明提权
GET/v1/auth/session读取当前会话无
GET/v1/auth/session/list列出本账号全部活跃会话无
DELETE/v1/auth/session/others踢掉除当前会话外的全部会话max_age=300
DELETE/v1/auth/session/:sid踢掉指定会话max_age=300

GET /session

{
  "success": true,
  "user": {
    "sub": "usr_...",
    "username": "alice",
    "display_name": "Alice",
    "primary_email": "[email protected]"
  },
  "session": {
    "sid": "ses_...",
    "acr": "urn:muoceon:acr:aal1",
    "auth_time": "2026-11-14T08:31:12.000Z",
    "expires_in": 742
  }
}
字段说明
session.sid会话标识;撤销单条会话时用它
session.acr当前认证强度,客户端据此判断某操作是否会被要求提权
session.auth_time认证时刻,max_age 由此推算
session.expires_in访问令牌剩余秒数,用于决定何时刷新

GET /session/list

查询参数:limit(默认 20,上限 100)、cursor。

{
  "success": true,
  "sessions": [
    {
      "sid": "ses_...",
      "device_id": "device-8f3a1c2b",
      "acr": "urn:muoceon:acr:aal1",
      "auth_time": "2026-11-14T08:31:12.000Z",
      "created_at": "2026-11-14T08:31:12.000Z",
      "current": true,
      "user_agent": "Mozilla/5.0 ...",
      "ip": "203.0.113.7",
      "country": "JP"
    }
  ],
  "next_cursor": null
}

按最近活跃倒序。当前令牌对应的那一条 current: true。next_cursor 非空时带上它取下一页。

为什么用游标而不是 offset

会话列表在用户翻页的同时还在变化。offset 会让人看到重复项或漏掉项;游标钉住「上一页最后一条」,插入多少条都不影响下一页的起点。

DELETE /session/others

{ "success": true, "message": "Other sessions revoked", "revoked": 3 }

保留当前会话,其余全部作废。这是账号被盗后的标准自救动作,因此每次调用都会写入安全记录。

DELETE /session/:sid

路径参数说明
sid目标会话标识,必须属于当前账号

撤销当前会话本身也会立即让它的访问令牌失效。撤销其他会话时要求 max_age=300,未满足则返回 401 与提权挑战。

相关

本页目录