您好,我正在 Laravel 的一個專案中作業,我需要為每個用戶分配權限,以便我可以驗證每個刀片檔案或控制器功能,以檢查當前用戶是否有權執行此操作。此外,側導航鏈接也是使用這些權限動態生成的。我創建了兩個表:
1: User => [ID, Name .....]
2: Permissions => [ID, Name, user_id(fk)]
為了解決這個問題,我在登錄時將用戶的所有權限存盤在會話中。這樣我就可以驗證每個頁面上的所有權限并生成從會話中獲取的鏈接。
這是好方法還是有更好的解決方案
uj5u.com熱心網友回復:
如果您共享更多代碼會很好,但我可以看到您想要存檔的內容。首先,您不需要存盤在 Session 中,因為您已經在用戶物件和權限之間建立了關系。將這行代碼添加到您的用戶模型中:
public function permissions() {
return $this->belongsTo(User::class);
}
然后,您可以在刀片或控制器中訪問該權限。控制器中的小例子:
$user = User::find(1);
dd($user->permissions);
// you can write a condition to check if user has Permission etc.
uj5u.com熱心網友回復:
是的,您可以存盤這是會話。但更好的選擇是通過關系物件獲得許可,例如
user::find(1)->permissions()
uj5u.com熱心網友回復:
好吧,如果您要問“更好的解決方案” ……但是我不確定是否為時已晚,因為您已經在開發該專案。但是,我會推薦此軟體包用于您的長期管理(對于用戶和開發人員)。
Spatie Laravel 許可包
它具有基于角色的權限和直接權限設計(類似于您的設計)。安裝軟體包后,將為您創建角色和權限表。
一旦您創建了具有權限的所需角色,您就可以輕松管理允許哪個頁面顯示哪個角色以及顯示哪個按鈕。
您可以在控制器中檢查可以查看此頁面的角色。在刀片中,您可以檢查要顯示或禁用哪個按鈕的角色和權限。
因此,您無需擔心會話設定或會話過期。有利于以后的維護和發展。
Spatie 包語法簡單,易于使用。
安裝:
composer require spatie/laravel-permission
句法:
基本用法和語法
那里有很多資訊或教程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/445110.html
