# LingAdmin Authorization Service 授权微服务 - 负责角色管理、权限管理、用户角色分配等功能。 ## 服务信息 | 属性 | 值 | |------|-----| | 端口 | 5002 | | Dapr App ID | authorization-service | | Dapr HTTP Port | 3502 | | 数据库 | LingAdmin_Authorization | ## API 端点 ### 服务间调用端点 (无需认证) | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/authorization/users/{userId}/permissions` | 获取用户的角色和权限 | | GET | `/api/authorization/users/{userId}/check?permission=xxx` | 检查用户是否有指定权限 | ### 受保护端点 (需要认证) | 方法 | 路径 | 描述 | 权限要求 | |------|------|------|----------| | GET | `/api/authorization/me/permissions` | 获取当前用户权限 | 登录用户 | | GET | `/api/authorization/permissions` | 获取所有权限列表 | Admin/SuperAdmin | | GET | `/api/authorization/permissions/resource/{resource}` | 按资源获取权限 | Admin/SuperAdmin | ### 角色管理端点 | 方法 | 路径 | 描述 | 权限要求 | |------|------|------|----------| | GET | `/api/roles` | 获取所有角色 | Admin/SuperAdmin | | GET | `/api/roles/{id}` | 获取角色详情 | Admin/SuperAdmin | | POST | `/api/roles` | 创建角色 | Admin/SuperAdmin | | PUT | `/api/roles/{id}` | 更新角色 | Admin/SuperAdmin | | DELETE | `/api/roles/{id}` | 删除角色 | SuperAdmin | | POST | `/api/roles/assign` | 分配角色给用户 | Admin/SuperAdmin | | POST | `/api/roles/revoke` | 移除用户角色 | Admin/SuperAdmin | | GET | `/api/roles/user/{userId}` | 获取用户的角色 | Admin/SuperAdmin | ## 启动方式 ### 独立启动 ```powershell cd LingAdmin.AuthorizationService dotnet run ``` ### 使用 Dapr 启动 ```powershell dapr run --app-id authorization-service --app-port 5002 --dapr-http-port 3502 --resources-path ../dapr/components -- dotnet run ``` ## 数据库迁移 ```powershell # 添加迁移 dotnet ef migrations add # 更新数据库 dotnet ef database update ``` ## 预置数据 ### 预置角色 | ID | 代码 | 名称 | 系统角色 | 描述 | |----|------|------|----------|------| | 1 | SuperAdmin | 超级管理员 | ✅ | 拥有所有权限 | | 2 | Admin | 管理员 | ✅ | 系统管理员 | | 3 | User | 普通用户 | ✅ | 普通用户 | | 4 | Editor | 编辑 | ❌ | 内容编辑 | | 5 | Auditor | 审核员 | ❌ | 审核员 | ### 预置权限 #### 用户管理权限 | 代码 | 名称 | 资源 | 操作 | |------|------|------|------| | users:read | 查看用户 | users | read | | users:create | 创建用户 | users | create | | users:update | 编辑用户 | users | update | | users:delete | 删除用户 | users | delete | #### 角色管理权限 | 代码 | 名称 | 资源 | 操作 | |------|------|------|------| | roles:read | 查看角色 | roles | read | | roles:create | 创建角色 | roles | create | | roles:update | 编辑角色 | roles | update | | roles:delete | 删除角色 | roles | delete | #### 权限管理 | 代码 | 名称 | 资源 | 操作 | |------|------|------|------| | permissions:read | 查看权限 | permissions | read | | permissions:assign | 分配权限 | permissions | assign | #### 业务权限 | 代码 | 名称 | 资源 | 操作 | |------|------|------|------| | requisitions:read | 查看请购单 | requisitions | read | | requisitions:create | 创建请购单 | requisitions | create | | requisitions:update | 编辑请购单 | requisitions | update | | requisitions:delete | 删除请购单 | requisitions | delete | | requisitions:approve | 审批请购单 | requisitions | approve | | inventory:read | 查看库存 | inventory | read | | inventory:manage | 管理库存 | inventory | manage | | audit:read | 查看审计日志 | audit | read | | settings:read | 查看设置 | settings | read | | settings:update | 修改设置 | settings | update | ## 发布的事件 | 事件名称 | 描述 | 数据 | |----------|------|------| | role-created | 角色创建时发布 | RoleId, RoleCode, Timestamp | | role-updated | 角色更新时发布 | RoleId, ChangedFields, Timestamp | | role-deleted | 角色删除时发布 | RoleId, Timestamp | | user-role-assigned | 用户角色分配时发布 | UserId, RoleIds, AssignedBy, Timestamp | | role-permission-changed | 角色权限变更时发布 | RoleId, AddedPermissions, RemovedPermissions, Timestamp | ## 缓存策略 服务使用内存缓存来提高性能: | 缓存键 | 过期时间 | 描述 | |--------|----------|------| | user_roles_{userId} | 15 分钟 | 用户角色列表 | | user_perms_{userId} | 15 分钟 | 用户权限列表 | | all_permissions | 1 小时 | 所有权限列表 | 角色权限变更时会自动失效相关缓存。 ## 配置说明 ### appsettings.json ```json { "ConnectionStrings": { "DefaultConnection": "数据库连接字符串" }, "JwtSettings": { "SecretKey": "与 Identity Service 相同的密钥", "Issuer": "与 Identity Service 相同", "Audience": "与 Identity Service 相同" } } ``` > ⚠️ 注意: JWT 配置必须与 Identity Service 保持一致,否则无法验证 Token。