2016-02-26 4 views
3

Итак, я добавляю фасад ворот к моему конструктору в моей UserControllerPHP ремесленник маршрут: список ошибок с воротами

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 gate, manage-user для всех методов на моем пользовательском контроллере)? Нужно ли вручную проверять все методы? Разве это нарушит принцип СУХОЙ? – otezz

+0

Благодарим вас за предложение, пожалуйста, напишите его как ответ, чтобы я мог выбрать его как правильный ответ – otezz

ответ

1

Я думаю, вы хотите избежать выполнения таких проверок в конструкторе контроллера. Документы Laravel показывают ряд способов реализации проверок авторизации, ни один из них не находится в конструкторе контроллера.

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

Я хотел бы создать СформироватьЗапрос лично, с помощью метода авторизовать, который делает чек. Затем вы вводите этот 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'); 
    } 
} 
Смежные вопросы