2

FOSUserBundleを使用しています。別のファイアウォールを作成しました (以下の security.yml を参照) が、ログインしてページ localhost/BEL/app_dev.php/back_office にアクセスしようとすると、ログインした localhost/BEL/app_dev.php/login にリダイレクトされます。ログインしていないときの動作はまったく同じです。

ファイアウォールのパターンの最後と access_control のパスに $ を付けようとしましたが、ログインしているときとログインしていないときにページにアクセスできました (そのため、期待していたものではありませんでした)。 .

接続しているときにのみこのページにアクセスするにはどうすればよいですか (私のユーザーには ROLE_USER ロールしかありません)。

# app/config/security.yml
security:
    providers:
        fos_userbundle:
            id: fos_user.user_manager

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

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main_bo:
            pattern: ^/back_office/
            form_login:
                provider: fos_userbundle
            logout:       true
            anonymous:    false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
            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: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/back_office/, role: ROLE_USER }
        - { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN
4

1 に答える 1

1

ログインリダイレクトをインターセプトし、特別な場合 (バックエンドユーザーがログインした場合など) にカスタムリダイレクトを実行できる認証成功ハンドラーをいつでも実装できます。

チュートリアルについては、こちらをご覧ください

于 2012-06-25T22:31:11.167 に答える