query: tag: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 genki on Tue 20 Nov 2007 at 15:42 with 0 comments