# Mock SSO 基于 Next.js 16 + Mantine 8 的 Mock SSO 登录服务,登录页复用 uirefbase 的 UI 风格。 ## 快速开始 ```bash pnpm install pnpm dev # http://localhost:5501 ``` ## 环境变量 按环境拆分,已随仓库提交(参考 uirefbase 约定):`.env.development` / `.env.staging` / `.env.production`。 本地私有覆盖请写入 `.env*.local`(已被 `.gitignore` 忽略,不入库)。 | 变量 | 说明 | 示例 | |------|------|------| | `NEXT_PUBLIC_BASE_PATH` | 部署子路径,无则留空 | `""` | | `NEXT_PUBLIC_SHARED_API_PATH` | 后端 basis 服务地址(登录 / 验证码 / 租户列表都走这里) | dev: `http://172.16.115.31:6610/`
prod: `http://basis-app-svc:6610` | > 无密钥,可安全入库。Next.js 会按 `NODE_ENV` 自动加载对应文件(`next dev` → development,`next build/start` → production)。 ## 测试账号 | 账号 | 密码 | 姓名 | |------|------|------| | `admin` | `123456` | 管理员 | | `user01` | `123456` | 测试用户 | | `zhangsan` | `123456` | 张三 | 手机号登录:任意 11 位手机号 + 任意 6 位验证码即可。 ## SSO 登录流程 ### 1. 外部应用发起 SSO 请求 ``` http://localhost:5501/login?app_id=your_app_id&app_url=http%3A%2F%2Flocalhost%3A3000%2Fcallback ``` ### 2. 用户在此页面登录 ### 3. 登录成功后自动跳转 ``` http://localhost:3000/callback?sso_code=xxxxx ``` ### 4. 外部应用用 code 换取用户信息 ```bash curl -X POST http://localhost:5501/api/auth/verify \ -H "Content-Type: application/json" \ -d '{"code": "your_sso_code"}' ``` 返回用户信息和 token。 ## 直接访问 不带 `app_id` / `app_url` 参数访问 `/login`,登录成功后跳转到 `/dashboard` 管理后台。 ## API | 接口 | 方法 | 说明 | |------|------|------| | `/api/auth/login` | POST | 登录(返回 code 或 token) | | `/api/auth/verify` | POST | 验证 code 换取用户信息 | | `/api/mock/users` | GET | 测试用户列表 |