2016-02-26 19 views
3

所以,我將門門面到我的構造函數在我UserController的PHP工匠航線:與門列表錯誤

public function __construct() 
{ 
    if (Gate::denies('manage-user')) { 
     abort(404); 
    } 
} 

一切正常,但有一兩件事,現在php artisan route:list顯示以下錯誤

$ php artisan route:list 

[Symfony\Component\HttpKernel\Exception\NotFoundHttpException] 

如果我刪除了門,php artisan route:list運行良好。任何人都知道這是爲什麼發生?以及如何解決它?工匠能繞過門面嗎?

+0

你說得對,我只是移動從構造檢查我的方法,和PHP工匠路由表的工作原理。所以,如果在構造函數上進行檢查是錯誤的,那麼對整個控制器進行檢查檢查的最佳做法是什麼(我只想在我的用戶控制器上使用1個門,管理用戶,所有方法)?我是否必須手動檢查所有方法?那會打破DRY原則嗎? – otezz

+0

謝謝您的建議,請將其寫爲答案,以便我可以選擇它作爲正確答案 – otezz

回答

1

我想你想避免在控制器構造函數中做這樣的檢查。 Laravel文檔展示了許多實現授權檢查的方式,它們都不在控制器構造函數中。

https://laravel.com/docs/5.2/authorization#checking-abilities

我會親自創建FormRequest,與該檢查的授權方法。然後,將該FormRequest注入每個方法,並自動運行授權。

https://laravel.com/docs/5.2/authorization#within-form-requests

https://laravel.com/docs/5.2/validation#form-request-validation

-2

我用這個命令

public function __construct() 
{ 
    // check if request not from cli 
    if ('cli' != php_sapi_name()) { 
     $this->authorize('is_admin'); 
    } 
}