登录到Sonata管理员但控制器中的授权检查器返回false

时间:2015-09-01 10:23:17

标签: symfony authentication fosuserbundle sonata-admin

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

if ( ! $this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
    exit('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

1 个答案:

答案 0 :(得分:1)

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

添加到每个防火墙:

context: main