关于权限控制问题?

2020-08-10 10:07:12 +08:00
 1rookie1

我想实现的就是每一个用户的权限各不相同,可以精确控制。然后我现在的设计思路是分四张表,用户表、用户角色关联表、角色表、权限表。其中角色和权限关联,查询用户时,以用户角色管理表为主表,查询用户表和角色表,从而查询出该用户具有哪些权限。 我的问题是,我想实现的这种效果,这种方式是否是最优解?

3883 次点击
所在节点    Java
14 条回复
pws22
2020-08-10 10:25:25 +08:00
可以再加张用户与权限的关联表,用户可以没有角色,但是用户会有权限,或者用户会存在角色之外的一些额外权限
sparrowMan
2020-08-10 10:35:28 +08:00
RBAC 基于角色的权限访问控制( Role-Based Access Control ) Google 搜索看
takemeaway
2020-08-10 10:42:02 +08:00
需要这么多表吗? 不需要。。。
你要把权限抽象化,看看操作系统权限是怎么设计的吧。
644/777 。。。。
bluehr
2020-08-10 10:58:12 +08:00
就用简单的 RBAC 5 表结构就行了, 用户表、角色表、权限表,用户角色关联表,角色权限关联表, 用户的权限通过用户所关联的角色查询出来就好了。
HolmLoh
2020-08-10 11:11:10 +08:00
看你需要的权限颗粒度,在颗粒度细的情况下无脑学操作系统二进制权限管理后期拓展只会自找麻烦
hugee
2020-08-10 11:28:26 +08:00
这样处理太繁琐了
weipt
2020-08-10 11:48:50 +08:00
4 张表不够,还差一张角色和权限关联的表
qwerthhusn
2020-08-10 12:14:02 +08:00
select distinct privilege
from t_role_privilege
where role in (
select role
from t_user_role
where t_user_role.user = $userID
)
panhongkui
2020-08-10 12:31:27 +08:00
简单的 RBAC 五张表就够了,进一步扩展权限表可以拆分成菜单表和资源表,加入用户组。
wangyzj
2020-08-10 14:40:20 +08:00
建议参考 rbac
beginor
2020-08-10 15:17:52 +08:00
现在权限设计应该考虑 abac 了吧
CainWang
2020-08-10 23:06:10 +08:00
这就是最普遍的 RBAC 吧
jzmws
2020-08-10 23:54:33 +08:00
@sparrowMan 正解 这个可以解决 90.99% 的权限问题
xzour
2020-08-11 08:22:29 +08:00
既然涉及权限,我也想问一个,比如在 OA 系统里,设置上下级看单权限, 上级能看下级的,下级只能看自己的,这个 5 张表里面应该怎么设计
wc951
2020-08-12 10:32:15 +08:00
每个用户权限都不同的话授权操作是不是太繁琐了,你看数据库里就是这么授权的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696969

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX