0

我正在使用带有 Doctrine 的 Symfony 1.4。

抱歉,如果这是一个愚蠢的问题,但究竟需要在 sfDoctrineGuardPlugin 之上构建什么才能让“记住我”功能正常工作?

当我登录一个用户时,sfRemember cookie 的默认寿命为 15 天,并且记忆密钥保存在插件的 sf_guard_remember_key 表中。

无需对插件进行任何调整,sfGuardSecurityUser SignIn() 方法就会创建 cookie,但 Signout() 方法会删除它,除非您已登录,否则不会留下任何 cookie!

Signin():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age);

Signout():
sfContext::getInstance()->getResponse()->setCookie($remember_cookie, '', time() - $expiration_age);

我可以看到数据库表将 cookie 保存为 sf_guard_user 的关系,但如果 cookie 消失了,那就不好了......

如果有人能告诉我我在这里缺少什么,我将不胜感激,理想情况下,如果我阻止 Signout() 方法删除 cookie,我是否需要自己编写代码来读取 cookie 或者这是在某处自动化/不知何故?我有标准的 Symfony 1.4 和 sfDoctrineGuardPlugin 安装。

这一切似乎完全错误,并且不存在关于此的文档。

任何帮助将不胜感激。

4

1 回答 1

2

为什么要在用户注销后保留记忆 cookie?

它的唯一目的是让用户保持登录状态,即使在他当前的会话超时之后——因此是 cookie。这意味着如果他关闭浏览器(并且会话 cookie 被删除),他将在下次访问该站点时自动使用记住 cookie 登录。

但是如果他退出,我们希望他完全退出 - 这就是为什么需要清除记忆 cookie。

于 2010-04-28T23:51:53.720 回答