Laravel 模型策略 "Create" 无效
Laravel Model Policy "Create" not working
我搜索了很多,还没有找到解决这个问题的方法。
调用我的资源控制器创建方法时,我总是得到 403。
其他有效的策略:查看、更新、删除
关于模特政策:
public function create(User $user)
{
$manager = app('impersonate');
return ($user->hasRole('Psycologist') || $user->hasRole('Intern')) && !$manager->isImpersonating();
}
在控制器上:
public function create()
{
$this->authorize('create', User::class);
return view('personalarea::layouts.areas.employment.jobboard.employee.experience.create');
}
在 AuthServiceProvider 上:
\'App\Models\Employment\CandidateExperience' => 'App\Policies\JobCandidateExperiencePolicy',
CandidateExperience::class => CandidateExperiencePolicy::class,
两个版本都试过了,没有区别。
还确保 registerPolicies 在启动时设置。
$this->registerPolicies();
我试过在策略方法上调用 die("test") 但没有任何区别,似乎甚至没有被调用。
有什么想法吗?
我认为问题出在这一行:
$this->authorize('create', User::class);
你不应该传递 User::class,用户参数将由 laravel 而不是你注入,你应该传递你要创建的模型类型:
$this->authorize('create', CandidateExperience::class);
更多详细信息:
https://laravel.com/docs/7.x/authorization#via-the-user-model
我搜索了很多,还没有找到解决这个问题的方法。
调用我的资源控制器创建方法时,我总是得到 403。
其他有效的策略:查看、更新、删除
关于模特政策:
public function create(User $user)
{
$manager = app('impersonate');
return ($user->hasRole('Psycologist') || $user->hasRole('Intern')) && !$manager->isImpersonating();
}
在控制器上:
public function create()
{
$this->authorize('create', User::class);
return view('personalarea::layouts.areas.employment.jobboard.employee.experience.create');
}
在 AuthServiceProvider 上:
\'App\Models\Employment\CandidateExperience' => 'App\Policies\JobCandidateExperiencePolicy',
CandidateExperience::class => CandidateExperiencePolicy::class,
两个版本都试过了,没有区别。
还确保 registerPolicies 在启动时设置。
$this->registerPolicies();
我试过在策略方法上调用 die("test") 但没有任何区别,似乎甚至没有被调用。
有什么想法吗?
我认为问题出在这一行:
$this->authorize('create', User::class);
你不应该传递 User::class,用户参数将由 laravel 而不是你注入,你应该传递你要创建的模型类型:
$this->authorize('create', CandidateExperience::class);
更多详细信息:
https://laravel.com/docs/7.x/authorization#via-the-user-model