我在Laravel中使用策略。当我在策略中使用两个用户模型时,它将无法访问我!但是,$user
和$player
分别返回正确的数据给我。我该如何处理?我怎么了?
在控制器中:
$this->authorize('modifyTournamentRegistration', $player);
在政策中:
public function modifyTournamentRegistration(User $user, User $player)
{
return $user->id === $player->id || $user->inRole('admin');
}
答案 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);
它也可以正常工作:)