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