基于角色与团队属性的ASP.NET Core用户访问权限控制咨询
基于角色与团队属性的内容访问限制实现方案
需求说明
- 角色分类:Admins、Leaders、普通用户(Normal Users)
- 团队属性:红队(Red Team)、蓝队(Blue Team)
- 核心权限规则:
- Admins:可访问所有内容
- Leaders:仅能访问所属团队的领导者页面和普通页面
- 普通用户:仅能访问所属团队的普通页面
- 附加条件:团队属性存储在数据库中,用户可切换团队以变更可访问内容;已通过
Microsoft.AspNetCore.Authorization中的policy.RequireRole实现角色权限控制,但团队属性不属于角色范畴,不想通过硬编码(如user.teamcolor='red')的方式判断权限,需要更灵活的实现方案
已落地的解决方案
- 数据库层配置:新增权限标记表,表中以团队颜色为行、页面为列,通过布尔值设置对应团队对指定页面的访问权限
- 自定义授权要求:创建自定义授权要求(custom requirement),用于检查权限标记表中当前用户所属团队对应页面的权限值是否为
true - 权限验证整合:在项目启动代码中同时配置角色验证与自定义授权要求的校验逻辑,额外编写代码获取用户的团队颜色声明值,以此查询权限标记表中对应行的权限配置,完成权限校验
内容的提问来源于stack exchange,提问作者HalpingHand12
相关产品推荐
相关产品推荐

