Fago 文档 Fago 文档
首页
快速开始
后端手册
前端手册
规划备查
文档维护
首页
快速开始
后端手册
前端手册
规划备查
文档维护
  • 快速开始

    • 简介
    • 功能列表
    • 快速启动(后端)
    • 快速启动(前端)
    • 技术选型
    • 项目结构
    • 接口与错误码
  • 后端手册

    • 配置与环境
    • 登录与会话
    • 功能权限与菜单
    • 数据权限
    • 用户、部门、岗位与角色
    • 租户与安全策略
    • 异常处理与错误码
    • 参数、分页与响应
    • 数据库迁移
    • 日志、脱敏与请求加密
    • 平台租户与套餐
    • fago-cli 常用命令
    • 发布验证与恢复演练
    • 字典与参数配置
    • 文件与对象存储
    • 站内通知与执行恢复
    • 定时任务与运行恢复
    • 可靠消息后端与积压观测
    • 身份客户端与设备会话
    • 会员认证与账号管理
    • 服务账号与 scope
    • OIDC 提供方与外部绑定
    • 原生 SSO 验收客户端
    • 账号认证模式
    • 工作流 API 与运行目录
  • 前端手册

    • 本地启动
    • 菜单与路由
    • 请求合同
    • 页面与按钮权限
    • 浏览器单点登录
    • 审批中心与表单发起
    • 工作流定义与运行管理
  • 规划备查

    • Fago:架构与实施方案
    • 总体架构
    • 身份、权限与租户设计
    • Vben 5 前端与 API 合同
    • 数据库与消息后端适配
    • 纯 Go 通用工作流:文件、文档与业务流程
    • 核心数据模型
    • 分期、工作包与验收
    • 架构决策与风险
    • 参考来源与基线
    • 网络安全等级保护二级合规要求
    • M0 实施与验收
    • M1 身份与导航实施及验收
    • 项目配置、API 内容加密与敏感数据脱敏
    • M2 系统管理实施记录
    • M3 平台与 SaaS 实施记录
    • fago-cli 功能规划
    • 生产传输层 WARN 变更范围(2026-10-23)
    • M4 发布实施与验收
    • M4 加固检查归档(本地工程环境)
    • M5 通用平台与身份实施
    • M6 R3.1 正式工作流核心与基础审批
目录

登录与会话

# 登录与会话

# 目的

让读者用租户或平台口令完成登录、刷新 access、退出和改密,并理解刷新 Cookie 与 access 的分工。成功登录后 JSON 里能看到 accessToken 与 expiresIn,浏览器会收到 HttpOnly 刷新 Cookie;改密或全局退出后应回到登录页且旧 access 不再加载菜单。

# 前置条件

API 已迁移并完成初始化,Redis 可用。浏览器或调用方使用的 Origin 必须与 APP_AUTH_ORIGINS 中登记的精确值一致;租户请求还要带 X-App-Request: admin,平台带 platform。开发 loopback 需 APP_AUTH_COOKIE_PROFILE=development-http。缺 Origin 或不在白名单会返回 403004,不能靠伪造租户头切换身份。

租户身份走 /api/admin/v1,平台身份走 /api/platform/v1。两套账号、会话和 Cookie 分开。

# 租户口令登录

下列请求在开发/测试为明文 JSON;生产须先按 日志、脱敏与请求加密 加密正文,解密后的字段相同。

POST /api/admin/v1/auth/login
Origin: http://127.0.0.1:5174
X-App-Request: admin
Content-Type: application/json

{
  "tenantCode": "example",
  "clientId": "admin-web",
  "username": "admin",
  "password": "<操作者提供>"
}

成功时刷新凭证只写入 HttpOnly Cookie,不出现在 JSON:

{
  "code": 0,
  "data": {
    "accessToken": "<access>",
    "expiresIn": 900,
    "mustChangePassword": true
  },
  "message": "ok",
  "requestId": "req_example"
}

未知账号、口令错误、租户停用和过期,对外统一为 HTTP 401 与 401003,调用方不能据此判断账号是否存在:

{
  "code": 401003,
  "message": "账号或密码错误",
  "requestId": "req_example"
}

平台身份使用 POST /api/platform/v1/auth/login,正文不含 tenantCode,X-App-Request 为 platform,clientId 通常为 platform-web。

客户端须在同 realm 注册表启用;更短期限、同应用会话上限与配置版本 fencing 见 身份客户端与设备会话。access 默认 15 分钟;刷新 Cookie 最长 7 天,会话绝对期限 30 天。业务空闲由租户安全策略决定,种子 30 分钟。必须改密会话绝对期限 30 分钟,刷新不会延长该期限。

连续 5 次口令失败锁定 15 分钟。Redis 限流在校验口令之前;Redis 故障返回 503001,限流拒绝不增加账号失败次数。

# Cookie

刷新 Cookie 按浏览器请求的 Origin 协议选择名称与 Secure:HTTPS 使用 __Secure-admin_rt / __Secure-platform_rt 且带 Secure;HTTP loopback 使用 dev_admin_rt / dev_platform_rt 且不带 Secure。均为 HttpOnly、SameSite=Strict、无 Domain,Path 分别为 /api/admin/v1/auth 与 /api/platform/v1/auth。

development-http 在开发/测试只允许 loopback HTTP Origin。生产允许 HTTP 时 API 启动 WARN,不因此拒绝启动。

# 刷新、退出和改密

携带与登录相同的 Origin、X-App-Request 与刷新 Cookie:

POST /api/admin/v1/auth/refresh
Origin: http://127.0.0.1:5174
X-App-Request: admin
Content-Type: application/json

{}

旧的 refresh 再次使用会先撤销会话,再返回 401002(会话已失效,请重新登录)。合法刷新后,同一会话里尚未到期的旧 access 仍可用到自身过期时间。

改密仅针对当前登录者,成功后撤销全部会话并清除 Cookie,须重新登录:

PUT /api/admin/v1/profile/password
Origin: http://127.0.0.1:5174
X-App-Request: admin
Authorization: Bearer <access>
Content-Type: application/json

{
  "currentPassword": "<操作者提供>",
  "newPassword": "<操作者提供的新口令>"
}

GET /auth/sessions 与 DELETE /auth/sessions/{id} 只处理本人、同一 realm 的会话;他人会话为 404001。DELETE /auth/sessions 撤销本人当前 realm 下所有 client 的会话。

mustChangePassword 为 true 时,除刷新、退出和本人改密外,受保护入口返回 403003。

# 边界

本页为口令登录与本地会话;浏览器 OIDC 入口见 浏览器单点登录(前端路径)与 账号认证模式。服务账号不使用本页接口。

# 关联

设计与并发规则见 M1 身份与导航。业务码含义见 异常处理与错误码。

最后更新: 2026/10/28 10:34:52
配置与环境
功能权限与菜单

← 配置与环境 功能权限与菜单→

Theme by Vdoing | Copyright © 2026-2026 Fago 项目文档
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式