Привет
Делаю ajax логин в symfony, столкнулся с тем, что после регистрации не появляется сессия юзера, следовательно всякие запросы по типу:
$request->getSession(); - возвращают null
$request->getUser() - возвращают null
__
Что я сделал:
security.yaml
firewalls:
main:
anonymous: ~
pattern: ^/
http_basic: ~
provider: our_db_provider
form_login:
login_path: index #редиректит сюда, если нет логина
check_path: login #отрабатывает функцию логина
success_handler: authentication_handler
failure_handler: authentication_handler
logout:
path: logout
target: /
Кастомный класс authenticaton_handler
class AuthenticationHandler implements AuthenticationSuccessHandlerInterface,
AuthenticationFailureHandlerInterface
{
public function onAuthenticationSuccess(Request $request, TokenInterface $token)
{
if ($request->isXmlHttpRequest()) {
$response = new JsonResponse([
'reload' => 'reload',
]);
return $response;
} else {
$redirect = new RedirectResponse("index");
return $redirect;
}
}
Что я тут делаю. Если форма принимает правильные данные, то у меня срабатывает стандартный механизм логина, который передает управление кастомному логину, который возвращает JSON-ответ, и уже фронт его использует для обновления всего.
Проблема в том, что механизм логина переключается на мой обработчик раньше, чем прописывает все сессии. По идее, я как-то кастомно могу прописать сессию через TokenInterface $token в моем кастомном классе, но я не пойму, как это сделать.
Гугл не дал ответа, там, к сожалению, каша из ответов разной паршивости на все версии symfony.