20th Tue
Railsのsessionを自分でセットアップする方法
ブラウザ以外のUserAgentからRailsアプリケーションにリクエストを送る場合、Railsが管理しているsessionの仕組みとは別に、自分でセッションをセットアップしたくなる事があります。
そのような場合は、たとえばクエリパラメータからsession_idを渡したりするのですが、GET methodで受け渡したsession_idからRailsのsessionを再現するためには、以下のように記述します。
ruby_on_rails>>
FooController < ApplicationController
session :off, :if => (proc do |req|
return false unless req.parameters[:action] == 'bar'
if req.parameters[:session_id]
@original_session_options = req.session_options
req.session_options[:session_id] = req.parameters[:session_id]
end
false
end)
prepend_before_filter :only => 'bar' do
if @original_session_options
@original_session_options[:session_id] = nil
end
end
<<--
before_filterを使っていないのは、before_filterでは
Railsのsession処理に間に合わないためです。
更新履歴
- 2007/11/20 不具合があったため内容を修正しました
posted by
genki on Tue 20 Nov 2007 at 15:42 with 0 comments