Symfony 使用FOS为EasyAdminBundle进行安全设置

Symfony 使用FOS为EasyAdminBundle进行安全设置,symfony,fosuserbundle,symfony-security,symfony2-easyadmin,Symfony,Fosuserbundle,Symfony Security,Symfony2 Easyadmin,我正在玩EasyAdminBundle,现在我正试图通过FOS UserBundle的表单登录设置安全性。然而,它并没有真正起作用。 我总是被重定向到security.yml中的“failure_path”,而不是成功登录。 我想要的是: 点击/轻松管理 重定向到FOS标准登录表单/轻松管理/登录 使用我的用户名和密码登录(我知道凭据是可以的) 请参阅/easy admin上的管理员“索引” 下面是我的security.yml配置: providers: fos_userbundle:

我正在玩EasyAdminBundle,现在我正试图通过FOS UserBundle的表单登录设置安全性。然而,它并没有真正起作用。 我总是被重定向到security.yml中的“failure_path”,而不是成功登录。 我想要的是:

  • 点击/轻松管理
  • 重定向到FOS标准登录表单/轻松管理/登录
  • 使用我的用户名和密码登录(我知道凭据是可以的)
  • 请参阅/easy admin上的管理员“索引”
  • 下面是我的security.yml配置:

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username
    
    firewalls:
        easy_admin:
            pattern:            ^/easy-admin
            context:            user
            form_login:
                provider:             fos_userbundle
                csrf_provider:        security.csrf.token_manager
                login_path:           fos_user_security_login
                check_path:           fos_user_security_check
                failure_path:         /
                default_target_path:  /easy-admin
            anonymous: ~
    
            logout:
                path:     /logout
                target:  /easy-admin/login
    
            access_control:  
                - { path: ^/easy-admin/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
                - { path: ^/easy-admin, role: ROLE_SUPER_ADMIN }
    
    我的routing.yml如下所示:

    easy_admin_bundle:
      resource: "@EasyAdminBundle/Controller/"
      type:     annotation
      prefix:   /easy-admin
    
    fos_user_security:
      resource: "@FOSUserBundle/Resources/config/routing/security.xml"
      prefix: /easy-admin
    
    fos_user_profile:
      resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
      prefix: /easy-admin/profile
    
    fos_user_register:
      resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
      prefix: /easy-admin/register
    
    fos_user_resetting:
      resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
      prefix: /easy-admin/resetting
    
    fos_user_change_password:
      resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
      prefix: /easy-admin/profile
    
    因此,目前发生的情况是:
    我可以点击/easy admin,我会被重定向到/easy admin/login并看到非常基本的登录表单。在提供信息并提交表单后,我被重定向到失败路径。再次声明:我知道我使用的凭据是正确的!你知道我遗漏了什么或者我还能找到什么吗?目前我还没有自己的AuthHandler,但我认为这并不是使会话基本登录正常工作所必需的。谢谢

    所以我终于找到了问题所在: 我们的cookie域配置不正确。修复后,它工作得很好

    这是最终配置:

    • security.yml:

      轻松管理: 模式:/easy admin(.*) 匿名:~ 上下文:用户

          form_login:
              login_path:         /easy-admin/login
              check_path:         /easy-admin/login_check
              default_target_path: /easy-admin/
              provider:           fos_userbundle
              use_referer:        false
      
              always_use_default_target_path: true
              require_previous_session: false
      
    • 路由.yml

      easy_admin_bundle:
       resource: "@EasyAdminBundle/Controller/"
       type:     annotation
       prefix:   /easy-admin
      
      fos_user_security:
       prefix: /easy-admin
       resource: "@FOSUserBundle/Resources/config/routing/security.xml"