laravel - Laravel 策略总是返回 403
问题描述
所以我制定了一项政策,无论我做什么,网页都会返回 403。我对 laravel 很陌生,所以很可能我错过了一些东西 :)
我做了一个模型
php artisan make:model exercise
| (我知道我应该大写模型,但这是一个错字)
控制器:
php artisan make:controller ExercisesController
政策:
php artisan make:policy ExercisePolicy -m exercise
我在 AuthServiceProvider.php 中注册了策略(也尝试了 'App\Models\exercise'=>'App\Policies\ExercisePolicy'):
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
exercise::class => ExercisePolicy::class,
];
在 ExercisesController.php 中,这是我使用身份验证的函数:
public function create(\App\Models\User $user)
{
$this->authorize('create', $user);
return view('exercises/create');
}
在政策上,这就是我的创建功能的样子
public function create(User $user)
{
return $user->admin == true;
}
路线:
Route::get('/exercises/create', [App\Http\Controllers\ExercisesController::class, 'create']);
我尝试放置 die("Policy is called); 并尝试从策略创建函数中返回 true 以检查它是否到达该位置,但它仍然返回 403 ,此时我很确定策略本身不是调用,因为它也默认返回 403
如果有人可以帮助提前谢谢!
解决方案
调用authorize
是使用第二个参数来确定要使用的策略。由于第二个参数是$user
它会寻找您尚未定义的用户模型的策略。要为exercise
模型使用策略,您必须传递类名,以便它知道要使用什么策略:
$this->authorize('create', exercise::class);
尽管您应该更正您的拼写错误并将exercise.php
文件重命名为Exercise.php
并将类名重命名为Exercise
.
推荐阅读
- c - 通过 ./configure --host=mingw32 后 Makefile 在制作时崩溃
- azure-log-analytics - LogMetric 不适用于微软扩展框架
- c++ - 用于添加 32 位元素数组的汇编函数无法正常工作
- lightningchart - IIFE版闪电图xydata
- android - Android 谷歌地图 moveCamera 无法正常工作
- c - remove() 函数无法按预期工作
- python - 各种特征之间的标准差比较
- python - 字符串中出现不同单词的次数 - python
- python - 无法在 azure iot edge 中安装 psutil 包
- excel - Excel VBA 代码在工作簿打开后停止运行