3

在我的注销操作中,我正在这样做:

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

但是响应只清除了 rememberme 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

但是响应看起来更像我所期望的(并且我的会话被正确销毁):

Set-Cookie: SESSID=50640523cf32b5b0fe8c93eb16aba6dc; path=/; HttpOnly

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

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

编辑 | 作为错误提出的问题。我现在会解决它。https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/6763-deleting-a-cookie-and-calling-reset_session-in-the-same-controller-action-does-not-发送新会话 cookie

4

1 回答 1

0

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

于 2011-05-02T06:27:03.410 回答