157 lines
5.0 KiB
Markdown
157 lines
5.0 KiB
Markdown
|
|
# 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 <MigrationName>
|
||
|
|
|
||
|
|
# 更新数据库
|
||
|
|
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。
|