Перенаправить анонимного пользователя на страницу /login

Итак, я использую проект FOSUserBundle и symfony 2.8.

есть ли способ перенаправить анонимного пользователя на страницу /login, если он требуется /page?


person Lunin Roman    schedule 24.04.2016    source источник


Ответы (2)


Используйте брандмауэр для защиты /:

# app/config/security.yml

security:

    firewalls:
        app:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_ADMIN }

Дополнительные сведения см. в документы FOSUserBundle.

person Jonny    schedule 24.04.2016
comment
вот так сейчас выглядит мой security.yml, но у меня он не работает, не знаю почему - person Lunin Roman; 24.04.2016
comment
Следовали ли вы руководству FOSUserBundle? Активировал пакет и т.д. - person Jonny; 24.04.2016
comment
Я подозреваю конфликтующие правила в вашем security.yml. Не стесняйтесь размещать свой полный файл здесь: gist.github.com - person Jonny; 25.04.2016

Сначала проверьте , если пользователь авторизован. Затем используйте условие if для перенаправления пользователя.

Полный пример вашего индекса:

public function indexAction()
{
    $context = $this->container->get('security.authorization_checker');
    if (!($context->isGranted('IS_AUTHENTICATED_REMEMBERED'))) {
        $this->redirect('http://yourpage.com/login');
    } else {
      //Do your other stuff here
    }
}
person manniL    schedule 24.04.2016