2016-07-18 4 views
0

Я хотел бы отслеживать действия анонимного пользователя, как если бы пользователь был аутентифицирован. Цель состоит в том, чтобы позволить пользователям выполнять действия (обычно зарезервированные для аутентифицированных пользователей), сохранять их в Базе данных со специальным статусом (невидимым, пока пользователь не войдет в приложение).Symfony 2 отслеживать анонимные действия пользователя в базе данных

Например, анонимный пользователь ответить на комментарий. Система обнаруживает, что пользователь не вошел в систему, сохраните комментарий со специальным статусом «Ожидание аутентификации». Система просит пользователя войти в систему, чтобы завершить регистрацию комментария. Пользователь регистрируется в приложении. Система проверяет статус «ожидание аутентификации» и обновляет/связывает записи с аутентифицированным пользователем.

Есть ли у вас какие-либо предложения/опыты для реализации этого типа функциональности? Может быть, у Symfony уже есть функция/пакет для этого?

ответ

2

Что вы пытаетесь сделать, это simillar to Lazy Registration, что является проверенной концепцией. Он хорошо реализован здесь, в stackoverflow. Он позволяет отправлять сообщения после предоставления адреса электронной почты. Он работает аналогично этому: http://www.90percentofeverything.com/2009/03/16/signup-forms-must-die-heres-how-we-killed-ours/

Однако, если вы действительно хотите идти своим путем, не спрашивая пользователя для адреса электронной почты, я бы рекомендовал хранить данные в браузере локального хранения. Это сэкономит вам много работы на стороне сервера. Данные будут переданы на бэкэнд только тогда, когда пользователь зарегистрируется. Таким образом, вы также предотвратите загрязнение базы данных пользователями, которые никогда не регистрировались. http://blog.teamtreehouse.com/storing-data-on-the-client-with-localstorage

0

Вы можете использовать IP-адрес, но он не будет очень эффективным, потому что один пользователь может получить доступ к вашему сайту со многих IP-адресов (подключение Wi-Fi, 3g/4g ...). Вы можете положиться на файлы cookie, но как только он войдет с другого устройства, вы ничего не сможете с этим поделать.

IMO, вы должны сохранить действия и связать их с токеном uniq, который вы отправляете анонимному пользователю, после того как он аутентифицирован, он может предоставить сгенерированный токен, а затем сохранить действия для этого пользователя. Старайтесь не забывать удалять сохраненные анонимные действия после их «идентификации».