1

FOSUserBundle をインストールして、ある程度は機能しています。ログインすると、想定されていることはすべて実行されますが、適切な場所にリダイレクトされます。

AdminBundle routes.yml ファイルにルートを設定しました (github の FOSUserBundle インストール ドキュメントからのまさにルート)。

そのためのファイアウォールを作成しました:

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

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    fos_userbundle:
        id: fos_user.user_manager

firewalls:
    admin_area:
        pattern:    ^/admin/
        form_login:
            check_path: /admin/login_check
            login_path: /admin/login
            provider: fos_userbundle
        anonymous: true
        logout:
            path:   /admin/logout
            target: /admin/

access_control:
     - { path: ^/admin/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
     - { path: ^/admin/, roles: ROLE_ADMIN }

唯一の問題は、 http: //mysite.dev/admin に移動すると、正しい http://mysite.dev/admin/loginリダイレクトされることです...ログインすると、httpにリダイレクトされます。 /admin の代わりに//mysite.dev/

ログイン フォームを拡張して、自分のもののように見えるようにしたことに注意することが重要です。私の AdminBundle のビュー フォルダーに layout.html.twig を作成して、管理者の残りのデザインのように見せます。私が使用すること..

何か案は?ありがとう..

4

1 に答える 1

4

ログインフォームに「_target_path」という名前の隠し入力を配置する必要があります。これは、symfony がユーザーの認証に成功した後にユーザーをリダイレクトする場所を確認するために使用します。カスタマイズできます。次のドキュメントを確認してください: http://symfony.com/doc/current/cookbook/security/form_login.html

于 2012-08-07T16:11:07.493 に答える