现有一个系统需要设计权限管理数据库表,除了常见的“用户注册、登录”等之外,里面还有创建和管理项目的需求。不同的项目分配给不同的人,项目里面的一些操作不同身份的人有不同的权限。用户分为本公司用户和外面公司用户,看了些基于RBAC的权限设计,基本有“用户”、“角色”、“权限”及其关联表,但是“项目”怎么设计其权限数据库表我就有点懵了,请大牛帮助指导下
现有一个系统需要设计权限管理数据库表,除了常见的“用户注册、登录”等之外,里面还有创建和管理项目的需求。不同的项目分配给不同的人,项目里面的一些操作不同身份的人有不同的权限。用户分为本公司用户和外面公司用户,看了些基于RBAC的权限设计,基本有“用户”、“角色”、“权限”及其关联表,但是“项目”怎么设计其权限数据库表我就有点懵了,请大牛帮助指导下
15 回答6.9k 阅读
2 回答3.3k 阅读✓ 已解决
3 回答7k 阅读✓ 已解决
3 回答3.1k 阅读✓ 已解决
5 回答4.7k 阅读
3 回答5.1k 阅读
4 回答2.3k 阅读
如果我没理解错,项目的操作权限只和用户的角色(即你说的身份有关)
userId和projectId
的关联表(具体可以参见hibernate的manytomany)自增主键,项目id,角色id,项目权限
,其中 项目id+角色id是联合唯一键,项目权限业务中可以用枚举变量,在表中可以用数字表示题外话
其实所有设计都应该回归本源,即业务需求。『不同角色有不同的操作权限,且不同角色在不同项目中权限不同』,这个具体的场景是什么?是有一个管理员平台供超级管理员去设置每个角色在每个项目中的权限么?
其实我觉得更合理的方案:用户权限和项目解耦,可能只是用于系统的登录和其他模块的操作权限。项目权限直接通过页面配置,且是用户纬度的,即把第二张表中的角色id改为用户id即可。即每个项目管理员都可以给用户分配权限,所以项目权限在用户纬度配置更加合理