Выступать за пользователя, когда я уже выдал себя за другого пользователя?

Я хочу, чтобы иметь возможность олицетворять пользователя в моем приложении, поэтому я следил за учебником с веб-сайта

Если я попытаюсь изменить своего пользователя от пользователя «A» на пользователя «B», он работает, но если я попытаюсь перейти на пользователя «C», а я уже выдал себя за пользователя «B», метод attemptSwitchUser выбрасывает это исключение:

 You are already switched to "B" user. 500 Internal Server Error - LogicException 

Это связано с тем, что этот метод проверяет, имеет ли текущее имя пользователя (B) имя пользователя, которое мы хотим выдать (C)

 $token = $this->securityContext->getToken(); $originalToken = $this->getOriginalToken($token); if (false !== $originalToken) { if ($token->getUsername() === $request->get($this->usernameParameter)) { return $token; } else { throw new \LogicException(sprintf('You are already switched to "%s" user.', $token->getUsername())); } } 

Но, очевидно, этого никогда не может быть так, поэтому я не знаю, является ли это ошибкой в ​​коде Symfony или есть что-то еще, что мне не хватает.

Это действительно ошибка? Могу ли я достичь этой функциональности, не комментируя этот блок кода?

Коммутируемый пользователь не может переключиться на другой . Прежде чем вы сможете это сделать, вам нужно вернуться к исходному пользователю ( ?_switch_user=_exit )