group
权限与协作
支撑服务层RBAC 权限模型
角色定义 + 权限分配 + 字段级权限用户通过角色获得权限,支持静态权限和动态权限结合
RBAC 权限模型
角色定义 + 权限分配 + 字段级权限用户通过角色获得权限,支持静态权限和动态权限结合
在团队协作中,不同角色有不同的职责和权限。如何设计灵活的权限系统,支持角色定义、权限分配、数据可见性控制?如何实现字段级权限和行级权限?
工作空间角色 - RBAC 的核心
@Data
@TableName("t_workspace_role")
public class WorkspaceRole {
@TableId(type = IdType.AUTO)
private Long id;
// 工作空间 ID
private Long workspaceId;
// 角色名称
private String name;
// 角色类型(系统/自定义)
private RoleType type;
// 权限列表(JSON 数组)
private String permissions;
// 成员数量
private Integer memberCount;
}权限检查服务 - 统一的权限验证入口
@Service
public class PermissionService {
/**
* 检查用户是否有权限
*/
public boolean hasPermission(String userId, String permission) {
// 获取用户在当前工作空间的角色
List<WorkspaceRole> roles = getRolesByUser(userId);
// 检查角色是否包含该权限
for (WorkspaceRole role : roles) {
List<String> perms = parsePermissions(role.getPermissions());
if (perms.contains(permission)) {
return true;
}
}
return false;
}
/**
* 检查字段级权限
*/
public boolean canEditField(String userId, String fieldId) {
// 查询字段权限配置
WorkFieldRole fieldRole = getFieldRole(fieldId);
return hasPermission(userId, fieldRole.getEditPermission());
}
}