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

これを同じヘッダーと比較すると、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

4

1 に答える 1

0

念のために言っておきますが、この Cookie を正しいキーに割り当てていますか? クッキー[:rememberme]? ハッシュ属性が見つからない場合、Cookie は削除されません。

于 2011-05-02T06:27:03.410 に答える