Snapmaker 管理端共享权限包。对接 snapmaker-admin-oauth 权限系统,提供 OAuth2 登录、RBAC 权限判断、服务端菜单驱动渲染、请求拦截器等完整能力。
# 本仓库 workspace 内
pnpm add @snapmaker/admin-auth --filter <your-app>
# 其他仓库(Git 安装)
pnpm add "git+https://your-gitlab.com/snapmaker/snapmaker-admin.git#main&path=packages/admin-auth"// 1. 配置 API 地址
import { initAuthConfig } from '@snapmaker/admin-auth';
// 开发环境:相对路径走 Umi proxy
initAuthConfig({ baseUrl: '' });
// 生产环境:绝对路径直连后端
initAuthConfig({ baseUrl: 'https://api.snapmaker.com' });// 2. .umirc.ts — 请求拦截器
export const request = createPermissionRequest({
getAccessToken, setTokens, removeTokens, attemptRefresh, getRefreshState,
});// 3. 页面中控制权限
import { Authorized } from '@snapmaker/admin-auth';
<Authorized permission="system:user:delete"><Button danger>删除</Button></Authorized>详细接入步骤见 INTEGRATION.md。
| 模块 | 说明 |
|---|---|
auth.ts |
Token 存取(localStorage 双 token)、并发安全的 refresh、封装全部 API |
access.ts |
createAccess(user) → hasPermission / hasAnyPermission / hasRole,super_admin 全过 |
menu.ts |
服务端菜单树 → ProLayout menuData 转换 |
request.ts |
createPermissionRequest() → Umi RequestConfig 工厂,自动 Bearer token + 401 refresh |
Authorized.tsx |
<Authorized permission="xxx"> 权限守卫组件 |
useLogin.ts |
useLogin() hook,封装 login → 存 token → 拉权限信息的完整流程 |
react^18/^19@umijs/max^4antd^5
snapmaker-admin-oauth 服务已部署,核心接口:
| 接口 | 说明 |
|---|---|
POST /system/auth/login |
账号密码登录,返回 accessToken + refreshToken |
GET /system/auth/get-permission-info |
返回用户、角色、权限标识、菜单树 |
POST /system/auth/refresh-token |
刷新 token |
POST /system/auth/logout |
登出 |
UNLICENSED — 内部使用