我试图在 Laravel 8 中定义一些我无法工作的策略,但是我在 Laravel 7 中有相同的项目,它看起来工作得很好。
我正在使用 JSON API 规范包,它内置了授权者,允许我在不同的方法上运行策略。
无论如何,我正在尝试在所有路线上添加“创建”策略。
我有以下代码:
public function create($type, $request)
{
$this->authorize('create', $type);
}
在这个上下文和示例中,$type = 'App\Models\User'如果我在该行之前执行一个dd操作,我可以确认我正在使用该方法。
我的里面AuthServiceProvider有以下内容:
public function boot()
{
Gate::guessPolicyNamesUsing(function ($modelClass) {
return 'App\\Policies\\' . class_basename($modelClass) . 'Policy';
});
}
正如前面所说,这在另一个项目中完美运行。
以下是我的政策,您可以看到它非常基本。
<?php
namespace App\Policies;
use App\Models\User;
class UserPolicy
{
public function create(User $user)
{
return true;
}
}
如果我在策略类中创建一个构造函数,我可以确认它正在受到攻击,并且我正在进入策略内部,这就是为什么这让我如此困惑。
我尝试更改方法的名称,以防它与命名约定发生冲突,但似乎没有任何内容与之一致。
我曾尝试将作曲家作为双重检查,但再次没有运气。
守候你守候我