Laravel 拉维中间件403

Laravel 拉维中间件403,laravel,laravel-5,middleware,laravel-blade,http-status-code-403,Laravel,Laravel 5,Middleware,Laravel Blade,Http Status Code 403,我看了拉威尔的教程(8:15),并试图做同样的视频 当我将中间件添加到routes文件时,我生成了auth,创建并注册了一个策略,但即使我更改了用户角色id,它也始终显示403。我不明白为什么它不起作用,并显示403,也许有人可以向我解释一下?我哪里出错了?另外,当我在路由文件中使用中间件时,dd()在策略中不起作用 拉威尔5.8 web.php Route::get('/home', 'HomeController@index')->name('home')->middleware

我看了拉威尔的教程(8:15),并试图做同样的视频

当我将中间件添加到routes文件时,我生成了auth,创建并注册了一个策略,但即使我更改了用户角色id,它也始终显示403。我不明白为什么它不起作用,并显示403,也许有人可以向我解释一下?我哪里出错了?另外,当我在路由文件中使用中间件时,dd()在策略中不起作用

拉威尔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$此->授权和其他方式也适用于控制器

@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,
    ]);
}

代码不起作用,因为主路由中没有属性。 将变量传递给url就是答案
并且一切正常

尝试从您的策略中返回
true
,或者将策略作为一个整体删除,以查看是否存在问题