在我的S4应用程序中,我需要超级用户的切换用户“功能”。我有一个带有自动完成功能的表单输入,用于搜索用户(仅适用于角色“superadmin”),但我希望禁止用户冒充自己。我已经实现了这个eventsubscriber,但是对于$currentuser和$targetuser,它返回相同的标识(目标标识)。我哪里错了?
<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Http\Event\SwitchUserEvent;
class SwitchUserSubscriber implements EventSubscriberInterface
{
public function onSecuritySwitchUser(SwitchUserEvent $event)
{
$currentUser = $event->getToken()->getUser();
$targetUser = $event->getTargetUser();
if($currentUser->getUsername() == $targetUser->getUsername()){
throw new UnsupportedUserException("You can't impersonate yourself");
}
}
public static function getSubscribedEvents()
{
return [
'security.switch_user' => 'onSecuritySwitchUser',
];
}
}
有没有更好的方法来实现这一点?