default_target_path не работает с FOSUserBundle

Я установил FOSUserBundle и использую его в своем проекте. Его страница входа перенаправляет на неизвестный путь /_wdt/50366043f414d. Я изменил default_target_path под form_login в файле security.yml, но это не подействовало.

Как я могу изменить целевой путь страницы входа в FOSUserBundle?


person Dariush Jafari    schedule 23.08.2012    source источник


Ответы (3)


Я должен установить always_use_default_target_path на true, как показано в документации Symfony

#app/config/security.yml  

firewalls:
    main:
        pattern: ^/
        form_login:
            login_path: /login
            default_target_path: /my/desired/path
            always_use_default_target_path: true
person Dariush Jafari    schedule 23.08.2012

У меня была та же проблема, и причина, по которой у меня возникла эта проблема, заключалась в том, что Symfony пытался загрузить панель инструментов веб-отладки (отсюда и бит «_wdt» в ошибке), которая имеет свои собственные маршруты, которые вызываются в конце загрузка страницы. В моем случае я настроил свой security.yml следующим образом:

приложение/config/security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_USER }

Это означает, что если пользователь пытается открыть страницу для чего-либо за корнем «/», он должен войти в систему.

Я решил проблему, добавив часть «_wdt» и разрешив ее для анонимных пользователей:

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/css, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/js, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: ROLE_USER }
person maurits    schedule 13.10.2013
comment
Спасибо тебе за это! Это решение настоящей проблемы. К сожалению, выбранный ответ только перезаписывает внешний вид проблемы. - person Mark Labenski; 24.11.2014

Это может быть старая проблема, но вместо изменения access_control текущая конфигурация Symfony2 имеет дополнительный брандмауэр для панели инструментов отладки:

    # Disabling the security for the web debug toolbar, the profiler and Assetic.
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
person webDEVILopers    schedule 02.02.2015