我已经集成了FOS用户包,就像快速指南告诉你的那样。它似乎工作,除了一旦我登录并重定向它失去会议由于某种原因,我回来作为匿名用户。
如您所见,我已成功登录,应该重定向到主页。但是当我在主页上时,我被重定向回登录,因为我检查用户是否登录。所以它不记得我登录了。
这是我对security.xml的配置
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
check_path: /login_check
login_path: /login
provider: fos_userbundle
default_target_path: /
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: UserBundle\Entity\User
我显然已将捆绑包添加到app内核并创建了用户实体。当我运行doctrine命令时,它成功创建了用户表等...
我在另一个项目中工作正常,唯一的区别是对于这个项目我使用的是docker。这会导致问题吗?
编辑: 这是我用来检查用户是否登录的代码:
if(!$this->container->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY') ){
return $this->redirect($this->generateUrl('fos_user_security_login'));
}
在login_check重定向后,工具栏显示为匿名。
答案 0 :(得分:0)
我注意到,如果我的save_path
位于/var/www/project
下,它安装在我的本地计算机上,则无效。
所以在config.yml中我注释了handler_id
并将save_path
值更改为~