【问题标题】:Laravel Model Policy "Create" not workingLaravel 模型策略“创建”不起作用
【发布时间】:2022-02-08 13:33:54
【问题描述】:

我搜索了很多,但没有找到解决这个问题的方法。

当调用我的资源控制器创建方法时,我总是得到 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") 并没有区别,它似乎甚至没有被调用。

有什么想法吗?

【问题讨论】:

  • 在您的模型政策返回中缺少)

标签: laravel laravel-6


【解决方案1】:

我认为问题出在这一行:

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

你不应该传递 User::class,用户参数将由 laravel 注入而不是你,你应该传递你想要创建的模型类型:

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

更多细节在:

https://laravel.com/docs/7.x/authorization#via-the-user-model

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 2020-10-01
    • 2019-04-04
    • 1970-01-01
    • 2013-03-30
    • 2023-04-07
    • 2017-12-26
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多