带有“记住我”的Symfony2 + FosUserBundle会产生500内部服务器错误

时间:2013-10-25 05:55:14

标签: symfony fosuserbundle remember-me

我正在开发一个网站,并注意到“记住我”登录功能无效。

所以我在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

我已清除缓存,但无法解决问题。

有关如何解决此问题的任何想法?

2 个答案:

答案 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')

就是这样。谢谢你忘了帮我解决这个问题。