Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony1 sfRemember cookie/sfGuard的问题记得我吗_Symfony1_Doctrine_Cookies_Remember Me_Sfguard - Fatal编程技术网

Symfony1 sfRemember cookie/sfGuard的问题记得我吗

Symfony1 sfRemember cookie/sfGuard的问题记得我吗,symfony1,doctrine,cookies,remember-me,sfguard,Symfony1,Doctrine,Cookies,Remember Me,Sfguard,我正在使用Symfony 1.4和Doctrine 抱歉,如果这是一个愚蠢的问题,那么在sfDoctrineGuardPlugin的基础上到底需要构建什么才能让“记住我”功能正常工作呢 当我登录一个用户时,SFRememberCookie被创建为默认的15天生存期,并且记忆密钥被保存在插件的sf_guard_Remembere_密钥表中 没有对插件进行任何调整,sfGuardSecurityUser-SignIn()方法创建cookie,但Signout()方法删除它,除非您登录,否则不会留下c

我正在使用Symfony 1.4和Doctrine

抱歉,如果这是一个愚蠢的问题,那么在sfDoctrineGuardPlugin的基础上到底需要构建什么才能让“记住我”功能正常工作呢

当我登录一个用户时,SFRememberCookie被创建为默认的15天生存期,并且记忆密钥被保存在插件的sf_guard_Remembere_密钥表中

没有对插件进行任何调整,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\u guard\u user的关系,但是如果cookie不存在,那就不太好了

如果有人能告诉我这里遗漏了什么,我将不胜感激。理想情况下,如果我阻止Signout()方法删除cookie,我是否需要自己编写代码来读取cookie,或者这是在某处/以某种方式自动执行的?我已经安装了box标准Symfony 1.4和sfDoctrineGuardPlugin

这一切似乎都是完全错误的,关于这一点的文档也不存在


任何帮助都将不胜感激。

为什么要在用户注销后保留“记住”cookie

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


但是,如果他注销,我们希望他完全注销-这就是为什么必须清除“记住”cookie的原因。

@Maerlyn:我的印象是,该功能与方便用户下次访问时登录有关(如果在cookie过期期内)通过保留用户名和/或密码以便快速访问。。。Symfony已经保存了另一个名为“Symfony”的cookie。很抱歉这么迂腐,但你确定这是你说的吗?嗯。。。。事情越来越清楚了。我想这是一种方法。我现在明白了,谢谢。@汤姆:是的,我肯定。有两种cookie:会话cookie(当您关闭浏览器时会被删除)和常规cookie,它们有一个过期日期(即在2010-04-30 12:34 UTC时删除)。第一个是在使用普通php$\u会话超全局和其他sesion管理函数时使用的。这是您可以通过sfUser实例访问的。常规函数用于memory函数,只是因为它不会在窗口关闭时被删除。当用户希望注销时,仍然有必要将其删除。是的,谢谢,现在很有意义。我认为该功能旨在实现其他功能,因此产生了混乱。