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。