5

インストールFOSUserBundleし、プロジェクトで使用しています。そのログインページは不明なパスにリダイレクトされます/_wdt/50366043f414ddefault_target_pathアンダーform_loginインファイルを変更しましたsecurity.ymlが、有効になりませんでした。

FOSUserBundleのログインページのターゲットパスを変更するにはどうすればよいですか?

4

3 に答える 3

14

symfonyのドキュメントに示されているように、 always_use_default_target_pathをに設定する必要がありますtrue

#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を次のように構成しました。

app / 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 }
于 2013-10-13T08:51:35.337 に答える
1

これは古い問題かもしれませんが、access_controlを変更する代わりに、現在のSymfony2設定はデバッグツールバー用の追加のファイアウォールを備えています。

    # 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 に答える