作者Nancy010006 (Nancy)
看板PHP
标题[请益] 数据权限结构设计
时间Fri Sep 27 17:55:02 2019
目前正在使用laravel实作一个类似校园系统的东西
但是在设计权限上发现遇到了一个有点问题的部分
研究了一下权限大致可分为功能权限和数据权限
目前功能权限的部分是使用laravel-permission这个套件,很方便有弄出来
但在数据权限的部分遇到了蛮大的障碍,例如说校长可以管理班级,并指派班级老师
老师可以看到被指派的班级资料,校长可以看到所有的班级资料,但可能也会有行政老师
,
行政老师可以在没有被指派班级的情况下看到所有的班级资料,
如果是只针对"班级"这件事这麽做
可以硬是开表写出来没问题,但是因为目前做的东西是希望可以模组化的,
可能会有校长又可以管理社团,并指派社团老师,然後又有行政人员....等等
会有很多种同样的情况,
所以不希望对班级就开一张班级的权限表,
这个时候想要处理谁可以看到资料的这个数据权限应该要怎麽设计或是有什麽思考、查询
的方向
查到的英文文件几乎都没什麽资料,可能是我关键字不会下,找到的几乎都是档案权限问
题
目前觉得这篇看起来可能有用
https://www.cnblogs.com/jhcelue/p/6759269.html
但是说明其实很少,也没什麽讨论的资料,所以觉得有点遇到障碍
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.197.228 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1569578104.A.825.html
1F:推 MoMoShota: 听起来你要的是 RBAC09/29 16:52
2F:→ MoMoShota: laravel-permission 这一套是用 morph 实现的09/29 16:52
3F:→ MoMoShota: 建议先看看 Eloqent 多态关连 Polymorphic Relations09/29 16:53
4F:→ MoMoShota: 了解多态关连之後,会比较知道那个套件是如何实现 RBAC09/29 16:54
5F:→ MoMoShota: 另外补一个,casbin 是我认为很有潜力的认证框架09/29 16:55
※ 编辑: Nancy010006 (39.12.137.226 台湾), 09/30/2019 09:24:55
6F:→ Nancy010006: 感谢分享,但是我以为RBAC是基於角色的权限控制,我 09/30 09:28
7F:→ Nancy010006: 现在想要的是更细的数据权限 譬如说两个不同的角色, 09/30 09:28
8F:→ Nancy010006: 校长跟一般老师,他们都可以执行查看班级资料这个功 09/30 09:28
9F:→ Nancy010006: 能,但是能查看的范围不同,校长可以看到全校的资料 09/30 09:28
10F:→ Nancy010006: ,而老师只能看到自己负责的 班级资料,这似乎不是 09/30 09:28
11F:→ Nancy010006: 纯RBAC可以解决的? 09/30 09:28
12F:推 DongFeng: 可以考虑创建另一种角色实体,来控制可存取的班级与社 09/30 20:41
13F:→ DongFeng: 团 09/30 20:41
14F:推 DongFeng: 然後在使用者资料上加入 functional_role_id & accessib 09/30 20:47
15F:→ DongFeng: le_role_id 来控制使用者可存取的方法与范围 09/30 20:47
16F:推 MoMoShota: 我个人是建议从大的做往小的 10/01 01:31
17F:→ MoMoShota: 「校长」是一个角色,「教师」是一个角色 10/01 01:32
18F:→ MoMoShota: 他们都具备「查阅班级资讯」的权限 10/01 01:33
19F:→ MoMoShota: 然後还有一个权限叫做「检视非所属班级」只有校长具备 10/01 01:34
20F:→ MoMoShota: 也就是说在点入「查阅班级资讯」时,会先确认: 10/01 01:36
21F:→ MoMoShota: 1. 是否可以查阅班级资讯 10/01 01:36
22F:→ MoMoShota: 2. 该班级是否为自己所属 10/01 01:36
23F:→ MoMoShota: 因为你在文中提到有多个角色,所以直觉上会想到 RBAC 10/01 01:38
24F:→ MoMoShota: 至於权限要设计哪些,或是他们有什麽规则都要想清楚 10/01 01:39
25F:→ Nancy010006: 感谢DongFeng大的建议,但这个描述对我来说还有点模 10/01 11:49
26F:→ Nancy010006: 糊,我再想想看是否可以套用 10/01 11:49
27F:→ Nancy010006: MoMoShota大这个方式跟我目前能想到的最佳解有点类 10/01 11:56
28F:→ Nancy010006: 似,因为要拆分功能模组,可能在「社团管理」功能中 10/01 11:56
29F:→ Nancy010006: ,行政老师可以查看全校班级资料,但在「成绩管理」 10/01 11:56
30F:→ Nancy010006: 功能中,行政老师只能看到其管理的班级资料,所以我 10/01 11:56
31F:→ Nancy010006: 目前想到的做法是在各个会用到查询班级资料的模组中 10/01 11:57
32F:→ Nancy010006: ,都各别多一个叫做`查看全校资料`权限,不知道这样 10/01 11:57
33F:→ Nancy010006: 的设计是否会过於冗长 10/01 11:57
34F:推 higoodman: 校长不会做你说的那些事 10/09 16:16
35F:→ Nancy010006: 假设啦只是一个比喻哈哈 10/10 08:20