已登录 Sonata 管理员,但控制器中的授权检查器 returns false

Logged into Sonata admin but authorization checker in controller returns false

我正在与 Symfony CMFSonata AdminSonata UserBundleFOS UserBundle 合作。我可以登录到后端并管理站点的实体。但是在我的前端控制器中检查登录用户时...

if ( ! $this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
    exit('not logged in');
}

... 'not logged in' 终止被触发。

我不确定我是否使用了正确的方法来检查用户是否已通过身份验证,或者我在配置 Sonata UserBundle.

时是否遗漏了什么

更新(添加防火墙)

config.yml

# FOS User Bundle
fos_user:
  db_driver: orm
  firewall_name: main
  user_class: Application\Sonata\UserBundle\Entity\User
  group:
    group_class: Sonata\UserBundle\Entity\BaseGroup
  registration:
    form:
      type: application_sonata_user_registration

security.yml

security:
  firewalls:

    # -> custom firewall for the admin area of the URL
    admin:
      pattern:      /admin(.*)
      form_login:
        provider:       fos_userbundle
        login_path:     /admin/login
        use_forward:    false
        check_path:     /admin/login_check
        failure_path:   null
      logout:
        path:           /admin/logout
      anonymous:    true
    # -> end custom configuration

    # defaut login area for standard users
    main:
      pattern:      .*
      form_login:
        provider:       fos_userbundle
        login_path:     /login
        use_forward:    false
        check_path:     /login_check
        failure_path:   null
      logout:       true
      anonymous:    true

你有两个安全系统,当你登录管理员时,你没有在主防火墙中进行身份验证,反之亦然。如果你想在一个会话中使用多个防火墙,你可以使用 context 选项 http://symfony.com/doc/current/reference/configuration/security.html#firewall-context

添加到每个防火墙:

context: main