Es ist wirklich, was die Überschrift besagt - ich kann nicht herausfinden, warum Benutzerumschaltung nicht funktioniert. In meinem security.yml ich habe:Symfony FOS-Benutzerpaket - Benutzer wechseln fehlgeschlagen: "Benutzername" * "existiert nicht."
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
Aufruf die URL
[ProjectPath]/account?_switch_user=testuser
Ergebnisse in dem Fehler
Switch User failed: "Username "testuser" does not exist."
"Testuser" jedoch ein absolut gültiger Benutzer ist, und ich kann lüge in der Regel mit diesem Benutzer beim Einloggen auf die Standard-Weise. Der Benutzer, mit dem ich mich beim Aufrufen der URL mit "_switch_user" angemeldet habe, hat die Rolle "ROLE_ALLOWED_TO_SWITCH" - dies scheint jedoch nicht das Problem zu sein. Ich stecke hier fest. Alle Hinweise werden sehr geschätzt.
EDIT:
Die Stacktrace zeigt, dass in "SwitchUserListener.php" den Aufruf von
$this->tokenStorage->setToken($this->attemptSwitchUser($request));
ausfällt und gefangen wird, in der gegebenen Fehler führt.
hatte ich ein ähnliches Problem und Ihr Hinweis hat mir geholfen, es zu lösen. Ich hatte einen leeren in_memory-Anbieter (zum Testen) und einen anderen. Habe gerade den in_memory-Provider entfernt und es hat funktioniert. Sieht so aus, als ob der erste Provider standardmäßig den Benutzer holt ... –