メニュー
ホーム
アーカイブ
元祖ワシ的日記
ほぼ雑記的メモ
←mixiでは最初の数センテンスしかニュースが流れないのだ
思い立ってIMAPのコードを書く→
Railsのsessionの expires
2008年09月23日(火)
Railsではアクセス毎にsessionの expiresを指定できないっぽいですねぇ。
rails + mongrelで使用しているのですが、そもそも
/usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.3/lib/mongrel/rails.rb
で
Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, response.body)
なんて記述があるわけで、どうやってもDEFAULT_SESSION_OPTIONSから 逃げることができないと。
sessionの期間を延長するだけなら、このDEFAULT_SESSION_OPTIONSを 書き換えてやればいいんですが(美しくないけど、他にやりようが無い)、 サイトでよくみかける、ユーザによってログイン状態を維持するか否かを選択できる機能を実装するとなるとちょっと工夫がいります。
というのは、この変数はクラス変数なので、一度書き換えると、全体に 波及してしまうのです。
で、解決方法ですが、てっとりばやいのは別のcookieを利用する方法。 これならexpiresを制御できます。
cookieにnonceで生成された値を入れておき、それが正当ならば ログイン、不当ならば非ログイン状態としておけばよいでしょう。
正当、不当な判定方法はいろいろあるけど、楽なのはsessionに nonceを補完しておくことですかね。
Tweet
コメント一覧
しかし、これはmongrel clusterでproductionモードではうまくいかないっぽい。うーむ。
プラグインの dynamic_session_expを入れる。 これに尽きるようです。 これはCGI::Sessionの仕様上どうにもならないということで。
エントリにコメントする
エントリにコメントする
タイトル
名前
コメント
完了
コメントが表示されるまで時間がかかることがあります。
Powered by
Red Leaf
( Rev. c78c769f2 ), © Issei Numata, 2007-2021