Symfony2 - Firewall with FOSUserBundle


Symfony2 - Firewall with FOSUserBundle

这里有Symfony2的新用户。

我正在尝试使用 FOSUserBundle 设置防火墙。

我已经拥有了/admin/ 之后的所有内容,需要用户成为管理员。

但是,我想将登录路径移动到/admin/login 而不仅仅是 /login

安全.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: ^admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^admin/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }

路由.yml

pwd_admin:
    resource: "@PWDAdminBundle/Resources/config/routing.yml"
    prefix:   /admin
pwd_website:
    resource: "@PWDWebsiteBundle/Resources/config/routing.yml"
    prefix:   /
fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile
fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /admin/register
fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting
fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /profile

尝试访问/管理员/登录时出现以下错误

No route found for "GET /admin/login

编辑:路线

fos_user_security_login           ANY      ANY    ANY  /login
fos_user_security_check           POST     ANY    ANY  /login_check
fos_user_security_logout          ANY      ANY    ANY  /logout
fos_user_profile_show             GET      ANY    ANY  /profile/
fos_user_profile_edit             ANY      ANY    ANY  /profile/edit
fos_user_registration_register    ANY      ANY    ANY  /admin/register/

我遇到了与您相同的问题,下一个解决方案帮助我看到了登录页面。

尝试将前缀添加到fos_user_security路由

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"
    prefix: admin

希望这有帮助。您可能会进一步遇到一些访问问题,我还没有解决方案,但也许您可以自己找到解决方案。祝你好运,也许你会与我们分享解决方案,那就太好了

祝您编码愉快。

您需要

将security.yml更改为:

security:
    firewalls:
        main:
            form_login:
                login_path: /admin/login