Навигация

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 вы добавили форму логина

 

 

Календарь

Декабрь 2018
Пн Вт Ср Чт Пт Сб Вс
« Янв    
 12
3456789
10111213141516
17181920212223
24252627282930
31