【问题标题】:Security setup with FOS for EasyAdminBundle使用 FOS 为 EasyAdminBundle 设置安全性
【发布时间】:2017-06-01 19:50:48
【问题描述】:

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

  1. 点击 /easy-admin
  2. 重定向到 FOS 标准登录表单 /easy-admin/login
  3. 用我的用户名和密码登录(我知道凭据没问题)
  4. 在 /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,但我认为这对于使用会话工作进行基本登录不是强制性的。谢谢

【问题讨论】:

    标签: symfony fosuserbundle symfony-security symfony2-easyadmin


    【解决方案1】:

    所以最后我发现出现了问题: 我们的 cookie 域配置不正确。修复此问题后,它工作正常。

    这是最终的配置:

    • security.yml:

      easy_admin: 模式:/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
      
    • routing.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"
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 2020-10-17
      • 2012-11-14
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      相关资源
      最近更新 更多