跳转至

平台网关

📄 创建: ZCode AI 2026-08-14 · 修改: JimWb 2026-08-14

https://doc.xpku.com/raw/tech/backend/api-standards/biz-api/gate.md

GateController:对接公司统一技术底座(UMSP)的单点登录/免密入口 + 本地账号登录混合网关。完全自定义(无标准 CRUD)。


⚠️ 易错点

  1. 多个接口返回非 JsonResult:getAppToken / postGetToken 返回 String,getCaptcha 返回图片流,entryCorp 返回 302 重定向
  2. entryCorp / getAppToken / loginCheck / getCaptcha 免登录(本身就是登录入口)

一、模块信息

@Tag:9002-平台入口。前缀 /dac/gate

应用判定逻辑:按 sysCode 查 sys_app 表,记录存在且不满足"appCode 为空且 authenticationMode=0"→ 本地应用(本地库认证);否则 → 底座应用(远程认证)。

关键配置(@Value 驱动): - project.dac.front-page:登录后重定向主页(默认 http://127.0.0.1:8080/work-startr/energy/work) - project.dac.check.enable:是否严格校验底座 token(默认 false) - 3 把 RSA 公钥(publicKey / tokenPublicKey / reTokenPublicKey)用于密码与 secret 加密


二、接口清单

GET /dac/gate/entryCorp — 平台统一入口/单点登录(免登录)

底座 SSO 入口。校验 token → 补齐账号信息 → 组装权限上下文 → createSession 创建会话 → 302 重定向到前端页面。

请求参数(全部 query):

参数 说明
token 底座登录 token
accountId 底座账号 ID
account 账号名(兜底)
orgCode 组织/工厂编码(corpCode 来源)
sysCode 应用编码(判定本地/底座)
callback_url 自定义重定向地址
menuType 默认 "0",透传给前端
  • 响应302 重定向(非 JSON)。query 携带:sessionId, menuType, sysCode, accountId, token, corpCode, sessionExpire

GET /dac/gate/getAccountData?token= — 获取账号信息

查当前登录账号详情。本地应用:从会话查用户+公司组装返回;底座应用:token 调底座透传。

  • 请求参数token + 请求头 sysCode
  • 响应JsonResult<AccountInfoData>

AccountInfoData 字段

字段 说明
main_account / main_account_id 主账号
account / account_id / account_name / account_type 账号信息
user_id / user_name 用户
org_id / org_name / org_code 组织
buttons 按钮权限 Map>
is_super / is_virtual 标记

GET /dac/gate/getAppToken?appCode=&appSect= — 获取应用 token(免登录)

appSect(底座密钥)RSA 加密后调底座换取应用级 token。

  • 响应String(成功=token;失败=底座原始 body,非 JsonResult)

POST /dac/gate/loginCheck — 登录校验(免登录)

账号+密码(+验证码)登录。本地应用:sysUserService.login 返回 JsonResult<SysUser>;底座应用:原样透传底座响应 body

  • 请求参数:TokenInfoDTO JSON:
{
  "userAccount": "zhangsan",
  "password": "密码(RSA 加密兼容明文)",
  "entCode": "验证码",
  "sysCode": "应用编码"
}
  • 响应:本地=JsonResult;底座=原始 JSON 字符串

GET /dac/gate/getCaptcha — 获取验证码(免登录)

  • 响应byte[](image/jpeg 图片流),失败返回 null

POST /dac/gate/postGetToken — 账号密码换 token

密码 RSA 加密后调底座 getTokenByPw。

  • 请求参数:TokenInfoDTO(userAccount、password)
  • 响应String(成功=token;失败=null)

POST /dac/gate/postGetTokenByEnc — 免密换 token(会话续期)

会话有效时:创建新 sessionId 续期(迁移缓存、销毁旧会话),然后按应用类型返回 token。

  • 请求参数:TokenInfoDTO(userAccount)+ 请求头 sysCodesessionid
  • 响应JsonResult<Map>,data = {token, sessionId}

三、SSO 对接流程(前端视角)

1. 用户在底座门户点击应用
   → 底座跳转 GET /apex-api/dac/gate/entryCorp?token=xxx&sysCode=xxx&orgCode=xxx...
2. 网关校验 token、创建会话
   → 302 重定向到前端页:?sessionId=xxx&sysCode=xxx&corpCode=xxx...
3. 前端从 URL 取 sessionId,后续请求放 Header sessionid
4. 需要账号详情:GET /dac/gate/getAccountData?token=(Header sysCode)
5. 会话快过期:POST /dac/gate/postGetTokenByEnc 续期拿新 sessionId

相关文档