我實現了角色/權限系統。現在我想的方法添加到Laravel的路由器,所以我可以做這樣的事情:延伸Laravel路由器
Route::get('sales', '[email protected]')->allow('Salesman');
我知道,我可以使用@can('Salesman')
(查看)和$user->can('Salesman')
(控制器),但我發現這麼多可讀我試圖這樣做的方式,因爲我將能夠看到路徑文件中的所有角色權限訪問。
我實現了角色/權限系統。現在我想的方法添加到Laravel的路由器,所以我可以做這樣的事情:延伸Laravel路由器
Route::get('sales', '[email protected]')->allow('Salesman');
我知道,我可以使用@can('Salesman')
(查看)和$user->can('Salesman')
(控制器),但我發現這麼多可讀我試圖這樣做的方式,因爲我將能夠看到路徑文件中的所有角色權限訪問。
正如您使用立面生成路線。這應該很容易。立面可以在config/app.php
facades
陣列中被否決。
您可以生成自己的Facade class並將其替換爲您的本機。其實是一個Router class。爲了實現您需要擴展和覆蓋以下順序的功能:
通過延長最後一個和返回那些路由器的newRoute
方法,您將能夠否決Laravel的邏輯。
您可以覆蓋路由器類,然後將其註冊到服務容器中以供Route
外觀使用。
更清楚:
Router
類)。要找到它,請打開Route
外觀,然後找到其服務提供商。從那裏,應該很容易找到路由器類。Route
外觀中找到的相同密鑰名稱註冊您的服務的實際方法。而且應該是這樣。您的服務現在由Route
自動選取。
做完所有你說的事後,我得到這個異常:應用程序\提供程序\ RouteServiceProvider :: boot(應用程序\路由器$路由器)的聲明應該與Illuminate \ Foundation \ Support \ Providers \ RouteServiceProvider :: boot兼容(照亮\ Routing \ Router $ router) – Alan
您可能正在從Laravel擴展您的提供商。這不是必需的,可能會導致類似問題。只要閱讀Laravel在該提供程序('RouteServiceProvider')中所做的操作,就可以像這樣做。但用你自己的替換'路由器'。 – vfsoraki
我沒有擴展提供者。我正在擴展laravel路由器。 – Alan