用户策略问题当我定义两个用户模型时

时间:2019-05-18 05:58:04

标签: laravel model policy

我在Laravel中使用策略。当我在策略中使用两个用户模型时,它将无法访问我!但是,$user$player分别返回正确的数据给我。我该如何处理?我怎么了?

在控制器中:

$this->authorize('modifyTournamentRegistration', $player);

在政策中:

public function modifyTournamentRegistration(User $user, User $player)
    {
        return $user->id === $player->id || $user->inRole('admin');
    }

1 个答案:

答案 0 :(得分:1)

我发现这是由于Policy中的Input变量类型。我在AuthServiceProvider中添加了User类:

protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
        User::class => UserPolicy::class,
    ];

然后,我在UserPolicy中定义了该函数:

public function modifyPlayerTournamentRegistration(User $user, User $player)
    {
        return $player->id === $user->id || $user->inRole('admin');
    }

并在Controller中使用它:

$this->authorize('modifyTournamentRegistration', $player);

它也可以正常工作:)