功能权限与菜单
# 功能权限与菜单
菜单和按钮权限由服务端决定。前端只渲染已经发布、并且落在本地组件白名单里的菜单。服务端不能下发远程脚本,客户端也不能提交任意组件路径。
# 三个读取接口
正常会话在改密检查通过后读取:
| 接口 | 返回 |
|---|---|
GET /auth/me | 当前用户、租户、角色和 homePath |
GET /auth/codes | 当前有效权限码 |
GET /auth/menus | 动态菜单树 |
三者来自同一份授权快照,并带 X-Authz-Version。版本不一致时前端清空后最多重取一次。持续不一致就停止,不安装半套菜单。必须改密的会话不能调用这三个接口。
没有业务菜单的用户仍可进入工作台和个人中心。直接输入没有权限的地址,或直接调用没有权限的 API,都会被拒绝。隐藏按钮不是授权。
# 权限码
租户目录通过 GET /system/menu-options 和 GET /system/permission-options 读取,返回目录键和标签。平台目录是 GET /permissions,不复用租户权限。
已落地的系统管理权限码形如 system:dept:read、system:user:update、system:role:read。按钮使用与服务端相同的字符串。授权时提交稳定的 menuIds,并同时满足这些菜单所需的读取权限。未知目录、平台权限,以及超出租户上限的授权会被拒绝。
角色如何绑定这些权限,见 用户、部门、岗位与角色。数据能看到哪一部分,见 数据权限。
登录后读取权限码(须已通过改密检查;响应头可含 X-Authz-Version):
GET /api/admin/v1/auth/codes
Origin: http://127.0.0.1:5174
X-App-Request: admin
Authorization: Bearer <access>
{
"code": 0,
"data": ["system:user:read", "system:dept:read"],
"message": "ok",
"requestId": "req_example"
}
最后更新: 2026/10/28 10:34:52