Я хочу, чтобы иметь возможность олицетворять пользователя в моем приложении, поэтому я следил за учебником с веб-сайта
Если я попытаюсь изменить своего пользователя от пользователя «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
)