Rails プロジェクトを rails 3.2.2 および Devise 2.0.4 にアップグレードした後、ログアウトできなくなりました。この問題は発生していません。代わりに、ログアウトをクリックしても適切にログアウト状態にならず、ユーザー オブジェクトは引き続き有効であり、current_user がまだ存在します。これが私のログにあるものです:
Started DELETE "/users/sign_out" for 127.0.0.1 at 2012-03-16 20:54:56 -0400
Processing by Devise::SessionsController#destroy as */*
Redirected to http://localhost:3000/
Completed 302 Found in 1ms (ActiveRecord: 0.0ms)
したがって、正しくルーティングされています。運が悪かったので、デバイスを再インストールしようとしました。
デバッグしようとして、次の行を挿入しました。
= session.inspect
私のテンプレートに。私が見つけたのは次のとおりです。
{"session_id"=>"XXXXXXXXXX4b2aa9600eb3bee9921e05", "warden.user.user.key"=>["User", [1], "$2a$10$3/l/XXXXXXXXXXdhS.KCRe"], "_csrf_token"=>"XXXXXXXXXXVSp805CEN8U+GA4FcSWupcVLPH1RoacE8="}
ログアウトを試行するたびに Session_id と _csrf_token が変更されますが、warden.user.user.key は変更されません。(各文字列の最初の 10 文字を空白にしたことに注意してください)。
誰でもこの動作を説明できますか?
ありがとう!