Laravel 中间件 403
Laravel middleware 403
我正在观看关于 Authorization Essentials (8:15) 的 laravel 教程,并尝试按照视频中的方式进行操作。
当我将中间件添加到路由文件时,我生成了身份验证、创建并注册了一个策略,但即使我更改用户,它也总是显示 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;
}
但政策在
home.blade.php 当我在视图文件中使用 can 时。 $this->authorize 和其他方式也适用于 controller
@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 就是答案
http://localhost/home/1 一切正常
我正在观看关于 Authorization Essentials (8:15) 的 laravel 教程,并尝试按照视频中的方式进行操作。
当我将中间件添加到路由文件时,我生成了身份验证、创建并注册了一个策略,但即使我更改用户,它也总是显示 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;
}
但政策在 home.blade.php 当我在视图文件中使用 can 时。 $this->authorize 和其他方式也适用于 controller
@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 就是答案 http://localhost/home/1 一切正常