我将我的Symfony3应用程序从共享主机移动到我刚刚设置的新VPS。当我尝试登录应用程序(使用休闲的FOSUserBundle表单)时,Symfony确实登录我只是为了在下一页重新加载时断开连接。这是“即时”,因为成功登录的第一件事就是重定向到页面。
我尝试了什么:
我正在使用Symfony 3.4.6和FOSUB 2.0.0。有什么想法吗?
更新:Security.yml
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
check_path: fos_user_security_check
failure_path: fos_user_security_login
login_path: /fr/public/login
default_target_path: app_homepage
logout:
path: fos_user_security_logout
target: fos_user_security_login
anonymous: true
access_control:
# Allow anonymous logging for these page:
- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/fr/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/fr/public/*, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/fr/lab, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/fr/help, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/cron, role: IS_AUTHENTICATED_ANONYMOUSLY }
# Techs pages
- { path: ^/_console, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_error, role: IS_AUTHENTICATED_ANONYMOUSLY }
# Staff only
- { path: ^/fr/staff/, role: ROLE_STAFF }
- { path: ^/fr/staff/*, role: ROLE_STAFF }
# Admin only
- { path: ^/fr/admin/, role: ROLE_ADMIN }
- { path: ^/fr/admin/*, role: ROLE_ADMIN }
# All other pages need to be logged
- { path: ^/*, role: [IS_AUTHENTICATED_FULLY,IS_AUTHENTICATED_REMEMBERED] }
答案 0 :(得分:1)
因此,问题在于Cookie和SSL。在我的新服务器上安装我的应用程序时,转移我的SSL证书需要一些时间,因此我的网站的URL是HTTP而不是HTTPS。
浏览器虽然使用了随HTTPS协议添加的名为PHPSESSID的Symfony用户会话cookie。由于未知原因,这个过时的cookie的存在阻止了日志记录,而没有返回任何错误。
另外,我使用的是Firefox的EditThisCookie插件,它没有显示PHPSESSID cookie的存在。虽然浏览器仍然考虑它。
因此,对于遇到相同(非常具体)问题的任何人:查找并删除可能难以找到的PHPSESSID cookie,因为不完全在同一协议下。在Firefox中:Web调试器>存储>饼干。
答案 1 :(得分:0)
您是否尝试过更改:
- { path: ^/fr/public/*, role: IS_AUTHENTICATED_ANONYMOUSLY }
到
- { path: ^/fr/public, role: IS_AUTHENTICATED_ANONYMOUSLY }
答案 2 :(得分:0)
我有一个类似的问题,但是结果是session.cookie_secure = true(php.ini),测试站点是HTTP(不是HTTPS)
; http://php.net/session.cookie-secure session.cookie_secure = false