LingAdmin/Backend/Services/AuthorizationService
Ling aefad16b2a init 2026-04-16 18:13:06 +08:00
..
LingAdmin.AuthorizationService init 2026-04-16 18:13:06 +08:00
README.md init 2026-04-16 18:13:06 +08:00

README.md

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

启动方式

独立启动

cd LingAdmin.AuthorizationService
dotnet run

使用 Dapr 启动

dapr run --app-id authorization-service --app-port 5002 --dapr-http-port 3502 --resources-path ../dapr/components -- dotnet run

数据库迁移

# 添加迁移
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

{
  "ConnectionStrings": {
    "DefaultConnection": "数据库连接字符串"
  },
  "JwtSettings": {
    "SecretKey": "与 Identity Service 相同的密钥",
    "Issuer": "与 Identity Service 相同",
    "Audience": "与 Identity Service 相同"
  }
}

⚠️ 注意: JWT 配置必须与 Identity Service 保持一致,否则无法验证 Token。