我正在开发一个网站,并注意到“记住我”登录功能无效。
所以我在security.yml
中添加了一个记住我的部分firewalls:
secured_area:
pattern: ^/
form_login:
check_path: /login_check
login_path: /login
provider: fos_userbundle
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
logout:
path: /logout
target: /
anonymous: ~
此处参考的是访问控制部分:
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 }
- { path: ^/account, roles: ROLE_USER }
记住我的功能现在似乎有效,因为如果我登录然后关闭浏览器并重新加载浏览器我仍然登录到该网站。但是,如果我尝试转到需要用户登录的任何页面(例如/ account / settings),我会收到以下错误:
The controller must return a response (false given).
500 Internal Server Error - LogicException
我已清除缓存,但无法解决问题。
有关如何解决此问题的任何想法?
答案 0 :(得分:0)
代码中的某个地方(/ account / settings控制器中的动作)你有类似
的东西return false;
或
$aVariable = false;
[... code ...]
return $aVariable;
调试您的操作(/ account / settings)并确保返回: - 如果您正在使用注释,则为数组 要么 - 如果您使用其他定义路线的方法
,则为“响应”实例答案 1 :(得分:0)
事实证明答案很简单。
在我的控制器方法中,我有任何经过验证的方法:
$this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')
这需要改为:
$this->container->get('security.context')->isGranted('ROLE_USER')
就是这样。谢谢你忘了帮我解决这个问题。