平台网关¶
📄 创建: ZCode AI 2026-08-14 · 修改: JimWb 2026-08-14
GateController:对接公司统一技术底座(UMSP)的单点登录/免密入口 + 本地账号登录混合网关。完全自定义(无标准 CRUD)。
⚠️ 易错点¶
- 多个接口返回非 JsonResult:getAppToken / postGetToken 返回 String,getCaptcha 返回图片流,entryCorp 返回 302 重定向
- 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:
- 响应:本地=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)+ 请求头
sysCode、sessionid - 响应:
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
相关文档¶
- 标准CRUD接口规范
- 系统管理 — 本地登录接口(loginByPassword)
- 业务中台接口首页