Архив метки: Twig

Symfony – How to Recognize User Before and After Logging In

Работая над проектом интернет магазина на базе Symfony, в целях безопасности, вместо того, чтобы хранить ID заказа в cookies, мы решили поступить наоборот — хранить Session ID в заказе в базе данных.

Все работало прекрасно пока в магазине присутствовал единственный режим оформления заказа — без регистрации.

Как только мы дали пользователям выбор — совершить покупку в качестве гостя, зарегистрироваться или авторизоваться во время оформления заказа, мы столкнулись с проблемой.

Проблема заключалась в том, что во время входа в систему, Symfony создает новый Session ID. Это сделано в целях безопасности и это правильно. Но теперь мы теряли заказ, который пользователь создал анонимно, поскольку в базе данных в заказе был записан старый Session ID.

Есть несколько способов решения этой задачи. Ниже представлен вариант, который нам показался наиболее разумным.

Решение

Если кратко, то мы решили передавать старый Session ID на форме входа, затем считывать его через событие onAuthenticationSuccess, которое вызывается в случае успешного входа в систему.

Ниже показан вариант для авторизации через AJAX.

Во-первых, в Twig шаблоне в процесс Checkout вы добавили форму логина