symfony2 настройка брандмауэра - странное поведение при входе в систему

0

Я использую symfony2 с FOSUserBundle, и я пытаюсь правильно настроить свой брандмауэр.

Я хочу, чтобы большая часть моего сайта не была доступна анонимным пользователям. Главная страница ($ в общедоступном шаблоне) и некоторые другие должны быть доступны в соответствии с шаблоном.

С моей текущей конфигурацией после входа в систему я перенаправляется на домашнюю страницу, но по-прежнему анонимным. Если я непосредственно набираю URL-адрес страницы, которая не разрешается анонимным сразу после этого, я могу получить к ней доступ, и я зарегистрируюсь (в профилировщике).

Моя конфигурация:

dev:
    pattern:  ^/(_(profiler|wdt)|css|images|js)/
    security: false
public:
    pattern:        /(login$|register|resetting|public|$)
    anonymous:      true
main:
    pattern:        ^/
    anonymous:      false
    provider:       main
    form_login:
        login_path: fos_user_security_login
        check_path: fos_user_security_check
    logout:
        path:       fos_user_security_logout
        target:     /

Что я могу сделать, чтобы он работал правильно (правильно зарегистрировался после входа в систему).

EDIT: Я лучше понимаю, что происходит: после входа в систему меня перенаправляют на домашнюю страницу = корневой адрес. Это сначала попадает в публичный брандмауэр и что я не воспринимаюсь как связанный.

Теги:
security
firewall
fosuserbundle

2 ответа

0
Лучший ответ

Готово! Решение включает в себя свойство контекста брандмауэра, которое лучше описано здесь: Аутентификация нескольких брандмауэров Symfony2 с одной формой входа

Моя конфигурация теперь становится:

брандмауэры:

dev:
    pattern:  ^/(_(profiler|wdt)|css|images|js)/
    security: false
guest:
    pattern:        /(user/login$|user/register|user/resetting|$)
    anonymous:      true
    context:        main_auth
main:
    pattern:        ^/(?!user/login$)
    anonymous:      false
    provider:       main
    context:        main_auth
    form_login:
        login_path: fos_user_security_login
        check_path: fos_user_security_check
    logout:
        path:       fos_user_security_logout
        target:     /
    remember_me:
        key:      "%secret%"
        lifetime: 86400 # 365 jours en secondes
        path:     /
        domain:   ~ # Prend la valeur par défaut du domaine courant depuis $_SERVER
    oauth:
        remember_me: true
        resource_owners:
            facebook:           "/loginhwi/check-facebook"
            github:             "/loginhwi/check-github"
            google:             "/loginhwi/check-google"
            twitter:            "/loginhwi/check-twitter"
            linkedin:           "/loginhwi/check-linkedin"
            flickr:             "/loginhwi/check-flickr"
        login_path:        fos_user_security_login
        check_path:        fos_user_security_check
        failure_path:      fos_user_security_login
        success_handler:  foodmeup_user.handler_auth
        oauth_user_provider:
            service: fosubuser.provider
0

Ну, вы всегда можете жестко указать путь, который вы перенаправляете после входа в систему (в файле security.yml). Вы можете прочитать больше здесь

security:
    firewalls:
        main:
            form_login:
                default_target_path: default_security_target

Ещё вопросы

Сообщество Overcoder
Наверх
Меню