5

我已经安装FOSUserBundle并在我的项目中使用它。它的登录页面重定向到未知路径/_wdt/50366043f414d。我更改了in文件default_target_path下的,但没有生效。form_loginsecurity.yml

如何更改 FOSUserBundle 中登录页面的目标路径?

4

3 回答 3

14

我必须将 设置always_use_default_target_pathtrue,如 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
于 2012-08-23T18:08:30.127 回答
6

我有同样的问题,我遇到这个问题的原因是因为 Symfony 试图加载 Web 调试工具栏(因此错误中的“_wdt”位),它有自己的路由,在末尾调用页面加载。就我而言,我已经像这样配置了我的 security.yml:

应用程序/配置/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 }
于 2013-10-13T08:51:35.337 回答
1

这可能是一个老问题,但当前 Symfony2 配置没有更改 access_control,而是为调试工具栏提供了额外的防火墙:

    # Disabling the security for the web debug toolbar, the profiler and Assetic.
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
于 2015-02-02T11:03:24.867 回答