Rack::Session::Cookie のリクエスト間でセッションが持続しない
概要
ラックを使用してセッション Cookie ベースを実装しようとしましたが、アプリケーションはリクエスト間で情報を保持していないようです。ユーザーがログインに成功した後、リダイレクトされたときにインデックスで使用されるフラッシュ メッセージを保存することになっていましたが、何が起こっていません:
-PostHandler
env['rack.session'][:flash] = "Successfully Logged In."
res.status = 302
res['Location'] = '/login'
-ルート
res = Rack::Response.new(render("index", @flash="#{env['rack.session'][:flash] || "No flash."}"))
スタックは、先頭に Rack::Session::Cookie を使用して次のように実装されます。
use Routes
use PostHandler
run Application.new
wdID?
解決策
議論のために説明すると、この問題はキャッシュの実装方法に関連しており、アプリ スタックのセッションの 1 層下にあり、ignore_headers: [‘Set-Cookie’] を設定していました。これにより、アプリケーションは Cookie を設定しなくなりました。ユーザーは、キャッシュ設定、ignore_headers: []; で設定を元に戻すことができます。