Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
Ruby on rails Rails 3 reset_会话和Cookie出现奇怪的会话问题。在同一控制器操作中删除(…)_Ruby On Rails_Ruby_Session_Cookies_Activesupport - Fatal编程技术网

Ruby on rails Rails 3 reset_会话和Cookie出现奇怪的会话问题。在同一控制器操作中删除(…)

Ruby on rails Rails 3 reset_会话和Cookie出现奇怪的会话问题。在同一控制器操作中删除(…),ruby-on-rails,ruby,session,cookies,activesupport,Ruby On Rails,Ruby,Session,Cookies,Activesupport,在我的注销操作中,我正在执行以下操作: reset_session cookies.delete(:rememberme) redirect_to root_url 但是会话没有被破坏 当我检查标头时,发送给我的注销操作的请求显然包括会话ID: Cookie: hiddenalerts=site_vrfy_124258; __utmz=REMOVED_INFO.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); elpriv=REMOVED_INFO;

在我的注销操作中,我正在执行以下操作:

reset_session
cookies.delete(:rememberme)
redirect_to root_url
但是会话没有被破坏

当我检查标头时,发送给我的注销操作的请求显然包括会话ID:

Cookie: hiddenalerts=site_vrfy_124258; __utmz=REMOVED_INFO.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); elpriv=REMOVED_INFO; SESSID=b39a9a89bb6a39ea91b620fe0da392ed; __utma=REMOVED_INFO; __utmc=REMOVED_INFO; __utmb=REMOVED_INFO
但响应只清除Memberme cookie,而不清除会话cookie:

Set-Cookie: rememberme=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
如果我在注释rememberme cookie删除时将其与相同的头进行比较。请求看起来相同:

Cookie: hiddenalerts=site_vrfy_124258; __utmz=REMOVED_INFO.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); elpriv=REMOVED_INFO; SESSID=b39a9a89bb6a39ea91b620fe0da392ed; __utma=REMOVED_INFO; __utmc=REMOVED_INFO; __utmb=REMOVED_INFO
但是响应看起来更像我预期的(并且我的会话被正确地销毁):

还有其他人经历过吗?我只能假设会话处理程序和应用程序控制器对Cookie的引用不同,因此,如果您在控制器中修改Cookie,这将破坏reset_会话所做的任何操作。我可以通过手动删除会话cookie来解决这个问题,但我想先了解发生了什么以及是否有已知的解决方法

显然,我需要能够在注销过程中清除“记住我”cookie,否则用户将立即重新登录


编辑作为错误提出的问题。我现在要解决这个问题

只是为了确保,但是您是否将此cookie分配给了正确的键?cookies[:记住]?如果找不到您的哈希属性,则不会删除cookie。

它正在正确删除Memberme cookie。问题是,除非我不删除Cookie,否则不会在Set-Cookie:header中发送新会话ID。我已经解决了这个问题,但在我看来,这似乎是Rails中一个陈旧的cookie数据错误。我遇到了类似的问题。Rails cookie处理现在似乎有一段时间有问题。你能告诉我你是如何解决这个问题的吗?我实际上是通过缓存代理来解决这个问题的,而不是Rails本身。代理正在将
集Cookie:
标题合并在一起。但是如果你想知道在我发现这个问题之前我的工作是什么,我只是将我的控制器操作更改为
if cookies[:rememberme];cookies.delete(:rememberme);将_重定向到(request.url);结束
,因此它实际上只是在两个请求上清除cookie并重置会话。我还发现,在功能测试中,除非调用
@request.env[“HTTPS”]=“on”
,否则安全cookie将不可见。。。这看起来很傻,但不管怎样。@d11wtq,+1,因为你的解决方案对解决我遇到的另一个问题具有重要价值。
Set-Cookie: SESSID=50640523cf32b5b0fe8c93eb16aba6dc; path=/; HttpOnly