Я создаю веб-приложение с Symfony 2, используя комплект FOSUserBundle.
Пользователи создают учетную запись, авторизуются и начинают использовать приложение.Перенаправление, если пользователь зарегистрирован
То, что я хочу добиться сейчас, что пользователь перенаправляется на свой счет с любой страницы, они могут быть в случае, если они вошли в
Это включает в себя:.
- , если они вернутся к логину страница
- если они вернуться на страницу регистрации
- , если они идут на главную страницу сайта
- раз они подтверждают свою электронную почту
- ОНК е они сбросить пароль
В принципе код будет выглядеть примерно так:
$container = $this->container;
$accountRouteName = "DanyukiWebappBundle_account";
if($container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')){
// authenticated (NON anonymous)
$routeName = $container->get('request')->get('_route');
if ($routeName != $accountRouteName) {
return $this->redirect($this->generateUrl($accountRouteName));
}
}
Проблема в том, я не знаю, где этот код должен идти.
Он должен быть выполнен для любого запроса. В Symfony 1 я бы использовал фильтр.
Это не рекомендует вводить контейнер в службе , вы можете ввести службу security.context. –
@benjamin Это еще проще. Поскольку @dan нуждается в объекте запроса, он может извлечь его из события через '$ event-> getRequest()'. См. Http://stackoverflow.com/a/11506088/838733, http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html#after-filters-with- the-kernel-response-event или https://github.com/symfony/symfony/blob/2.0/src/Symfony/Component/HttpKernel/Event/KernelEvent.php – nietonfir