【问题标题】:Symfony2 + FosUserBundle with "remember me" gives 500 Internal Server Error带有“记住我”的 Symfony2 + FosUserBundle 给出 500 内部服务器错误
【发布时间】:2013-10-25 05:55:14
【问题描述】:

我正在开发一个网站,发现“记住我”登录功能不起作用。

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

我已经清除了缓存,但这并没有解决问题。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 是的,为什么要投反对票?只是投票使它平衡。 :)
  • 我问了一个显而易见的问题.. 你确定对应于路由/account/settings 的控制器会返回结果吗?因为错误很明显..
  • 是的,如果我从 Security.yml 的防火墙设置中删除 'remember_me' 部分,所有页面都可以正常工作。
  • 请在问题中添加/account/settings控制器的代码。可能您在控制器中有条件,这取决于用户角色
  • 问题似乎很清楚.. 你的控制器没有返回 Response 实例。请提供控制器 ocde

标签: symfony fosuserbundle remember-me


【解决方案1】:

在您的代码中的某处(控制器中的 /account/settings 操作)您有类似

return false;

$aVariable = false;
[... code ...]
return $aVariable;

调试您的操作 ( /account/settings ) 并确保您返回: - 如果您使用注释,则为数组 或者 - 如果您使用其他定义路线的方法,则为“响应”实例

【讨论】:

    【解决方案2】:

    原来答案很简单。

    在我拥有的任何经过身份验证的方法的控制器方法中:

    $this->container->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')
    

    这需要改为:

    $this->container->get('security.context')->isGranted('ROLE_USER')
    

    就是这样。感谢被遗忘的人帮助我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多