【问题标题】:Laravel middleware 403Laravel 中间件 403
【发布时间】:2019-08-09 07:36:03
【问题描述】:

我正在观看关于 Authorization Essentials (8:15) 的 laravel 教程,并尝试做与视频中相同的操作。

当我将中间件添加到路由文件时,我生成了身份验证,创建并注册了一个策略,但即使我更改了用户 role_id,它也总是显示 403。我不明白为什么它不起作用并显示 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 和其他方式也可以在控制器中使用

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

【问题讨论】:

  • 尝试从您的保单中返回true 或将整个保单移除,看看是否是问题所在

标签: laravel laravel-5 middleware laravel-blade http-status-code-403


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2020-02-12
    • 1970-01-01
    • 2015-02-25
    • 2017-08-18
    相关资源
    最近更新 更多