[請益] 數據權限結構設計

看板PHP作者 (Nancy)時間5年前 (2019/09/27 17:55), 5年前編輯推噓5(5030)
留言35則, 4人參與, 5年前最新討論串1/1
目前正在使用laravel實作一個類似校園系統的東西 但是在設計權限上發現遇到了一個有點問題的部分 研究了一下權限大致可分為功能權限和數據權限 目前功能權限的部分是使用laravel-permission這個套件,很方便有弄出來 但在數據權限的部分遇到了蠻大的障礙,例如說校長可以管理班級,並指派班級老師 老師可以看到被指派的班級資料,校長可以看到所有的班級資料,但可能也會有行政老師 , 行政老師可以在沒有被指派班級的情況下看到所有的班級資料, 如果是只針對"班級"這件事這麼做 可以硬是開表寫出來沒問題,但是因為目前做的東西是希望可以模組化的, 可能會有校長又可以管理社團,並指派社團老師,然後又有行政人員....等等 會有很多種同樣的情況, 所以不希望對班級就開一張班級的權限表, 這個時候想要處理誰可以看到資料的這個數據權限應該要怎麼設計或是有什麼思考、查詢 的方向 查到的英文文件幾乎都沒什麼資料,可能是我關鍵字不會下,找到的幾乎都是檔案權限問 題 目前覺得這篇看起來可能有用 https://www.cnblogs.com/jhcelue/p/6759269.html 但是說明其實很少,也沒什麼討論的資料,所以覺得有點遇到障礙 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.197.228 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1569578104.A.825.html

09/29 16:52, 5年前 , 1F
聽起來你要的是 RBAC
09/29 16:52, 1F

09/29 16:52, 5年前 , 2F
laravel-permission 這一套是用 morph 實現的
09/29 16:52, 2F

09/29 16:53, 5年前 , 3F
建議先看看 Eloqent 多態關連 Polymorphic Relations
09/29 16:53, 3F

09/29 16:54, 5年前 , 4F
瞭解多態關連之後,會比較知道那個套件是如何實現 RBAC
09/29 16:54, 4F

09/29 16:55, 5年前 , 5F
另外補一個,casbin 是我認為很有潛力的認證框架
09/29 16:55, 5F
※ 編輯: Nancy010006 (39.12.137.226 臺灣), 09/30/2019 09:24:55

09/30 09:28, 5年前 , 6F
感謝分享,但是我以為RBAC是基於角色的權限控制,我
09/30 09:28, 6F

09/30 09:28, 5年前 , 7F
現在想要的是更細的數據權限 譬如說兩個不同的角色,
09/30 09:28, 7F

09/30 09:28, 5年前 , 8F
校長跟一般老師,他們都可以執行查看班級資料這個功
09/30 09:28, 8F

09/30 09:28, 5年前 , 9F
能,但是能查看的範圍不同,校長可以看到全校的資料
09/30 09:28, 9F

09/30 09:28, 5年前 , 10F
,而老師只能看到自己負責的 班級資料,這似乎不是
09/30 09:28, 10F

09/30 09:28, 5年前 , 11F
純RBAC可以解決的?
09/30 09:28, 11F

09/30 20:41, 5年前 , 12F
可以考慮創建另一種角色實體,來控制可存取的班級與社
09/30 20:41, 12F

09/30 20:41, 5年前 , 13F
09/30 20:41, 13F

09/30 20:47, 5年前 , 14F
然後在使用者資料上加入 functional_role_id & accessib
09/30 20:47, 14F

09/30 20:47, 5年前 , 15F
le_role_id 來控制使用者可存取的方法與範圍
09/30 20:47, 15F

10/01 01:31, 5年前 , 16F
我個人是建議從大的做往小的
10/01 01:31, 16F

10/01 01:32, 5年前 , 17F
「校長」是一個角色,「教師」是一個角色
10/01 01:32, 17F

10/01 01:33, 5年前 , 18F
他們都具備「查閱班級資訊」的權限
10/01 01:33, 18F

10/01 01:34, 5年前 , 19F
然後還有一個權限叫做「檢視非所屬班級」只有校長具備
10/01 01:34, 19F

10/01 01:36, 5年前 , 20F
也就是說在點入「查閱班級資訊」時,會先確認:
10/01 01:36, 20F

10/01 01:36, 5年前 , 21F
1. 是否可以查閱班級資訊
10/01 01:36, 21F

10/01 01:36, 5年前 , 22F
2. 該班級是否為自己所屬
10/01 01:36, 22F

10/01 01:38, 5年前 , 23F
因為你在文中提到有多個角色,所以直覺上會想到 RBAC
10/01 01:38, 23F

10/01 01:39, 5年前 , 24F
至於權限要設計哪些,或是他們有什麼規則都要想清楚
10/01 01:39, 24F

10/01 11:49, 5年前 , 25F
感謝DongFeng大的建議,但這個描述對我來說還有點模
10/01 11:49, 25F

10/01 11:49, 5年前 , 26F
糊,我再想想看是否可以套用
10/01 11:49, 26F

10/01 11:56, 5年前 , 27F
MoMoShota大這個方式跟我目前能想到的最佳解有點類
10/01 11:56, 27F

10/01 11:56, 5年前 , 28F
似,因為要拆分功能模組,可能在「社團管理」功能中
10/01 11:56, 28F

10/01 11:56, 5年前 , 29F
,行政老師可以查看全校班級資料,但在「成績管理」
10/01 11:56, 29F

10/01 11:56, 5年前 , 30F
功能中,行政老師只能看到其管理的班級資料,所以我
10/01 11:56, 30F

10/01 11:57, 5年前 , 31F
目前想到的做法是在各個會用到查詢班級資料的模組中
10/01 11:57, 31F

10/01 11:57, 5年前 , 32F
,都各別多一個叫做`查看全校資料`權限,不知道這樣
10/01 11:57, 32F

10/01 11:57, 5年前 , 33F
的設計是否會過於冗長
10/01 11:57, 33F

10/09 16:16, 5年前 , 34F
校長不會做你說的那些事
10/09 16:16, 34F

10/10 08:20, 5年前 , 35F
假設啦只是一個比喻哈哈
10/10 08:20, 35F
文章代碼(AID): #1TZTnuWb (PHP)
文章代碼(AID): #1TZTnuWb (PHP)