我正在使用Symfony CMF
,Sonata Admin
,Sonata UserBundle
和FOS 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
答案 0 :(得分:1)
您有两个安全系统,当您登录管理员时,您未在主防火墙中进行身份验证,反之亦然。如果您想为一个会话使用多个防火墙,则可以使用context
选项http://symfony.com/doc/current/reference/configuration/security.html#firewall-context
添加到每个防火墙:
context: main