0
我想在用戶通過身份驗證後設置全局變量 - 我們稱之爲permissions
。變量應該在控制器和視圖中可用。在Laravel的用戶授權後創建全局權限變量
實現它的最好方法是什麼?現在,在每種方法中,我必須執行數據庫查詢並檢查不是最優的用戶角色。
我知道我可以在appserviceprovider中聲明view::share
方法來將變量傳遞給視圖,但是在用戶通過身份驗證後會執行引導方法。
更新
我創建BaseController從控制器的延伸。
BaseController:
class BaseController extends Controller {
public $permissions;
public function __construct() {
$this->permissions = GroupRoles::where('id', Auth::user()->id)->first();
}
}
然後我試圖訪問從UserController中從BaseController擴展了權限變量。試圖訪問非對象。我認爲這是因爲BaseController構造函數是在中間件之前構造的。
class UserController extends BaseController {
public function showPermissions() {
return var_dump($this->permissions);
}
}
最終溶液
基礎是在BaseController使用$this->middleware(function ($request, $next)
。在控制器內
我用它創建了BaseController和構造函數。但我仍然無法從UserController訪問權限變量。我認爲我應該做更多的事情。因爲我正在嘗試獲取非對象屬性的錯誤。所以這個問題仍然與認證有關。 –
但是你試着從套裝中設置Permssion嗎?用戶控制器必須擴展BaseController,以便獲得它。或者,首先嚐試在構造函數中轉儲var,以便確保所需的數據在那裏。 –
UserController擴展了BaseController。 BaseController擴展了Controller。我得到這個錯誤是因爲構造方法在Auth方法被加載之前調用,或者我不知道如何調用它。 BaseController在構造函數中有以下代碼:'$ this-> permissions = GroupRoles :: where('id',Auth :: user() - > id) - > first();' –