簡體   English   中英

在Laravel 5中使用Entrust分配用戶權限,而不是角色權限

[英]Assign permission to user, not to role using Entrust in Laravel 5

我正在使用Laravel 5開發應用程序,我想使用Zizaco / Entrust為用戶分配角色和權限。 為了更好的理解,讓我舉一個例子:

我在數據庫中有4個角色:訪客,用戶,管理員,所有者。 所有者在管理面板和主站點上具有完全訪問權限,管理員在管理面板上具有有限的訪問權限,而在主站點上具有完全訪問權限,用戶應在主站點上具有自定義訪問權限,而訪客應該完全沒有訪問權限(卡住了直到他們被授予用戶角色為止)。

我面臨的問題是用戶的自定義訪問。 用戶有4個主頁,應請求訪問一個或多個頁面的權限。 他們可以在主頁上上傳文件,也可以執行其他一些操作。

我要給他們所有用戶的角色,但是,例如,用戶A有權僅查看第1頁,無法上傳文件或其他任何內容,用戶B有權查看第3頁和第4,僅將文件上傳到第3頁,除上傳文件外,將其他內容上傳到第4頁。 我想你知道了。

只能使用Entrust來完成此操作,還是應該在用戶和權限之間創建新的數據透視表並使用它來完成我需要的工作?

預先非常感謝您,

德拉戈斯

編輯:我以前想到的是賦予他們多個角色,例如“查看者到頁面一”,“上傳者到頁面一”,“查看者到頁面2”等等,但是隨后權限表在我的數據庫中將完全沒有用。

總而言之,我要完成的任務是,對頁面1和頁面2具有只讀權限的用戶登錄時,我希望會話中包含以下數據:

['id'->1,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','view-page-2']]

因此,他只能查看第1頁和第2頁,而不能上傳文件或其他任何內容。

當具有查看和上傳文件權限到第1頁的用戶登錄時,我想要:

['id'->2,'name'->'user's name','email'->'users's email','role'->'user','permissions'->['view-page-1','upload-to-page-1']]

因此,他只能查看第1頁並將文件上傳到第1頁。

回答這個問題可能有點晚,但這僅適用於到達此頁面的任何其他人。

好吧,老實說,您對權限表毫無用處是完全正確的。 如果有人要從頭開始構建站點,那么他將根據自己的需求定制系統。 我真的很喜歡委托,而委托沒有此功能的原因是因為直接向用戶分配權限是一種不良的設計架構。 權限表存在的唯一原因只是因為應用程序較小。 您只有一個資源,而所有角色實際上都使用相同資源的情況。 在這些情況下,您無需檢查每個用戶,而只需檢查權限。 但是在實際的中型/大型應用程序中,您將為每個角色使用單獨的控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM