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: //mysite.dev/而不是 /admin

重要的是要注意,我已经扩展了登录表单,使它看起来像我自己的......通过在我的 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 回答