Промежуточное ПО Laravel 403 - PullRequest
1 голос
/ 18 марта 2019

Я смотрел учебник по laravel о Essentials авторизации (8:15) и пытался сделать то же, что и в видео.

Я создал auth, создал и зарегистрировал политику, когда яв файл маршрутов добавлено промежуточное ПО, но оно всегда показывает 403, даже если я изменяю user role_id.Я не понимаю, почему это не работает и показывает 403, может быть, кто-то может мне объяснить?Где я ошибся?Кроме того, dd () не работает в политике, когда я использую промежуточное ПО в файле маршрута.

Laravel 5.8

web.php

Route::get('/home', 'HomeController@index')->name('home')->middleware('can:view,order');

AuthServiceProvider.php

protected $policies = [
     'App\Order' => 'App\Policies\OrderPolicy',
];

OrderPolicy.php

public function view(User $user, Order $order)
{
    return $user->role_id === 2;
}

, но политика работает в home.blade.php, когда я использую can в файле views.$ this-> authorize и другие способы также работают в контроллере

@can('view', $order)
    test
@endcan

HomeController.php

public function index(Order $order)
{
    //$this->authorize('view', $order);
    $orders = Order::all();

    return view('home', [
        'orders' => $orders,
        'order' => $order,
    ]);
}

1 Ответ

2 голосов
/ 19 марта 2019

Код не работал, потому что не было атрибута в домашнем маршруте.Передача переменной в URL - это ответ http://localhost/home/1, и все работает как надо

...