私のログアウトアクションでは、これを行っています:
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
これを同じヘッダーと比較すると、remembermecookieの削除をコメントアウトします。リクエストは同じように見えます:
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を手動で削除することでこの問題を回避できますが、何が起こっているのか、そして最初に既知の回避策があるかどうかを理解したいと思います。
明らかに、ログアウトプロセス中に「rememberme」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- send-new-session-cookie