После входа в систему я хочу, чтобы пользователь перенаправлялся на страницу, например на опрос, чтобы он / она не мог сделать или перейти в другое меню, если он / она не выполнил этот опрос.
Этот опрос поступает из базы данных, которая зависит от временного диапазона.
Если я поставлю каждый контроллер, чтобы проверить, выполнил ли пользователь опрос или нет, и перенаправить на страницу, разве это не будет эффективно?
И если я поставлю его после контроллера входа в систему, пользователь может щелкнуть меню или указать другую маршрутизацию на пройти этот опрос.

0
Chensienyong 6 Фев 2015 в 06:49

2 ответа

Лучший ответ

Более простым решением было бы перенаправить пользователя к определенному действию после успешного входа в систему. Эти действия вернут пользователя на главную страницу или страницу опроса в зависимости от того, какое условие вы предпочитаете установить. Таким образом, это действие можно рассматривать как точку входа пользователя в систему. Затем, используя диспетчер событий kernel.controller, проверяйте это действие для каждого запроса.

1
user3227262 6 Фев 2015 в 05:09

Вам необходимо реализовать прослушиватель kernel.controller, чтобы проверять какое-либо условие при каждом запросе. Это будет правильный путь. Вам нужно будет определить его только в одном месте.

Вы можете прочитать об этом подходе в официальных документах: http://symfony.com/doc /current/cookbook/event_dispatcher/before_after_filters.html

0
Michael Sivolobov 6 Фев 2015 в 04:50