Laravel中间件403

问题描述 投票:1回答:1

我正在观看有关Authorization Essentials(8:15)的laravel教程,并试图像在视频中那样做。

当我将中间件添加到路由文件时,我生成了auth,创建并注册了一个策略,但它总是显示403,即使我更改了用户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;
}

但是当我在视图文件中使用can时,策略在home.blade.php中有效。 $ 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,
    ]);
}
laravel laravel-5 middleware laravel-blade http-status-code-403
1个回答
2
投票

代码无效,因为归属路由中没有属性。将变量传递给url是答案http://localhost/home/1,一切正常

© www.soinside.com 2019 - 2024. All rights reserved.