这确实是标题所说的 - 我无法弄清楚为什么用户切换不起作用。在我的 security.yml 我有:
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle # using FOSUserBundle for user authentication
check_path: fos_user_security_check
login_path: fos_user_security_login
csrf_token_generator: security.csrf.token_manager # CSRF token - can be changed?
default_target_path: default_logged_in_target # default route to go to after login
# default_target_path: fos_user_profile_show
always_use_default_target_path: true # ignore the requested url and allways go to default route after login
logout:
path: fos_user_security_logout
target: default_loged_out_target
logout: true
anonymous: true
switch_user: true
调用网址
[ProjectPath]/account?_switch_user=testuser
导致错误
Switch User failed: "Username "testuser" does not exist."
但是,“testuser”是一个完全有效的用户,我可以在以标准方式登录时使用该用户正常登录。我在使用“_switch_user”调用 URL 时登录的用户确实具有“ROLE_ALLOWED_TO_SWITCH”角色 - 但这似乎不是问题。我被困在这里。任何提示都非常感谢。
编辑:
堆栈跟踪显示在“SwitchUserListener.php”中调用
$this->tokenStorage->setToken($this->attemptSwitchUser($request));
失败并被捕获,导致给定的错误。