认证与授权
1. 认证系统
| 功能 | 说明 |
|---|---|
| Sanctum Token认证 | 双 Guard Token 认证(admin/web),默认有效期 6 个月 |
| 多账号登录 | 支持用户名/邮箱/手机号三种登录方式 |
| 第三方登录 | 微信公众号授权登录、Apple 登录(管理员端预留) |
| 验证码服务 | 短信验证码(EasySMS)和邮件验证码 |
| Token 管理 | 刷新 Token、查看/撤销已签发的个人访问令牌 |
| 登录防护 | 登录频率限制、IP 限制 |
2. 权限管理
| 功能 | 说明 |
|---|---|
| 角色管理 | 创建、编辑、删除角色 |
| 权限管理 | 管理系统权限列表 |
| 角色权限分配 | 为角色分配权限 |
| 管理员角色分配 | 为管理员分配角色 |
| 权限检查 | 路由级(permission:xxx 中间件)和方法级权限控制 |
| 菜单权限 | 基于权限的菜单显示控制,前端自动过滤无权限路由 |
权限模型
- 使用
spatie/laravel-permission v8实现 RBAC - 支持角色与权限多对多关系
- 支持模型级多态关联(管理员、用户等多主体共用权限体系)
- 权限检查支持中间件和 Gate 两种方式
AI 助手权限
AI 助手(/admin/chat)复用同一套权限体系,分三层控制:
- 入口:
ChatController挂载permission:chat.use中间件 - 工具过滤:
Assistant::tools()按当前管理员的权限点动态过滤可用工具(工具实现RequiresPermission契约声明权限点) - 执行兜底:工具
handle()内authorizeAdmin()二次校验,防止模型被诱导发起越权调用
权限点与后台菜单共用(如 users.index/users.edit/settings.edit),AI 助手入口使用独立的 chat.use 权限点。
文档来源:PRD 第 3.2 节