【发布时间】: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