Я пытаюсь выдать себя за внешнюю ссылку. Например https://example.com/?_switch_user=email. Поэтому при нажатии на кнопку он будет перенаправлять пользователя и немедленно выдавать себя за него. Это прекрасно работает. Проблема в том, что когда я пытаюсь выдать себя за нового пользователя, это приводит к ошибке 500. Как и ожидалось, потому что активно олицетворение. Мой вопрос: возможно ли сначала запустить https://example.com/?_switch_user=_exit в фоновом режиме, а затем перенаправить на нового пользователя извне.
Это мой код до сих пор:
/**
* @Route("/admin/client/{email}", name = "client-impersonate")
*/
public function impersonate($email)
{
// first run someting to exit the active impersonation and then redirect below
return $this->redirect('https://example.com/?_switch_user='.$email);
}
Мое резервное решение состояло бы в том, чтобы создать какой-то слушатель на example.com, чтобы сначала проверить, есть ли активное олицетворение, и сначала «выйти» из него.
Но мне было интересно, могу ли я сделать это также с кодом выше. (до перенаправления)
Прежде чем я смогу получить доступ к коду Symfony, я думаю, что лучше всего проверить, что делает конечная точка switch_user с _exit, и сделать то же самое в вашем контроллере.






Не уверен, что означает «имперсонация», но если это означает, что вы вошли в систему, то выход из кода перед перенаправлением должен помочь: stackoverflow.com/questions/6464754/…