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