允许仅在Symfony2中切换/模拟特定用户

Žan*_*rle 9 switch-statement symfony

说明

在Symfony2中,允许用户切换到任何其他用户很容易.我的问题是,如何允许某些用户只切换到某些其他用户?我正在使用FOSUserBundle作为我的用户提供商.

有5个用户,UserA,UserB,UserC,UserD,UserE,但只有3个链接在一起.

UserA可以切换到UserB和UserC

UserB可以切换到UserA和UserC

UserC可以切换到UserA和UserB

谢谢你的帮助!

Tyl*_*mer 15

你可以通过覆盖默认的SwitchUserListener来实现这种类型的东西.

您要覆盖的参数是: security.authentication.switchuser_listener.class

例如,在parameters.yml中:

parameters:
  security.authentication.switchuser_listener.class: My\Project\Security\Listener\SwitchUserListener
Run Code Online (Sandbox Code Playgroud)

在您的自定义侦听器类中,您将实现Symfony\Component\Security\Http\Firewall\ListenerInterface并使用现有Symfony\Component\Security\Http\Firewall\SwitchUserListener类作为自定义实现的基础.