Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel策略始终返回403_Laravel - Fatal编程技术网

Laravel策略始终返回403

Laravel策略始终返回403,laravel,Laravel,所以我制定了一个政策,无论我做什么,网页都会返回403。我对拉雷维尔很陌生,所以很可能我遗漏了什么:) 我做了一个模特 php artisan make:模型练习(我知道我应该大写模型,但这是一个打字错误) 控制器: php artisan make:controller ExercisesController 政策: php artisan make:policy ExercisePolicy -m exercise 我在AuthServiceProvider.php中注册了策略(也尝试了

所以我制定了一个政策,无论我做什么,网页都会返回403。我对拉雷维尔很陌生,所以很可能我遗漏了什么:)

我做了一个模特
php artisan make:模型练习(我知道我应该大写模型,但这是一个打字错误)

控制器:

php artisan make:controller ExercisesController
政策:

php artisan make:policy ExercisePolicy -m exercise
我在AuthServiceProvider.php中注册了策略(也尝试了“App\Models\exercise”=>“App\Policies\ExercisePolicy”):

在ExercisesController.php中,这是我使用身份验证的函数:

public function create(\App\Models\User $user)
{
    $this->authorize('create', $user);
    return view('exercises/create');
}
在策略中,我的create函数就是这样的

public function create(User $user)
{
    return $user->admin == true;
}
路线:

Route::get('/exercises/create', [App\Http\Controllers\ExercisesController::class, 'create']);
我尝试过放置die(“调用了Policy”);并尝试从Policy create函数返回true,以检查它是否达到该值,但它仍然返回403,在这一点上,我非常确定策略本身没有被调用,因为它在默认情况下也返回403


如果有人可以帮忙,请提前感谢!

授权的调用使用了第二个参数来确定要使用的策略。因为第二个参数是
$user
,它将为您尚未定义的用户模型寻找策略。要将策略用于
练习
模型,您必须ss类名称,以便它知道要使用的策略:

$this->authorize('create', exercise::class);
尽管您应该更正键入错误,并将
exercise.php
文件重命名为
exercise.php
,将类名重命名为
exercise


我也遇到了同样的问题,我学到的是策略只能在经过身份验证的路由上工作

确保您的请求在实现策略时经过身份验证

$this->authorize('create', exercise::class);