クッキーレス対応

Railsでクッキーレスに対応(URL Rewriting)する方法。default_url_optionsを使いました。

ケータイなどのクッキーレスなブラウザに対応しようと思うと、セッションIDをURLに貼り付けたりします(URL Rewriting)が、
フツー(PHPやJavaだと)コンテナの設定一つで自動付与してくれます。

Railsでも出来そうなもんじゃねーかー・・・と調べても、そんな設定はなさそう。

でも、フックメソッドを使って、こんなやりかたができそうだ。

 class CookielessController < ApplicationController

  session :session_key => 'my_session_id'

  def default_url_options( options )
   #URL Optionに追加したいハッシュを返すだけ
   {:my_session_id => session.session_id }\
          unless request.env['HTTP_COOKIE']
          #クッキー使えないなら、
  end

 end

url_forメソッドが、自分のoptionと、上の結果をマージするようです。
よって、url_forが生成する全部のURLに、セッションIDがURLパラメータとして挿入されます。

form_tagやlink_toなどのヘルパーも、内部ではurl_forを呼んでいるので、結果は同じ。{ :action=>:index }などを引数に持つメソッドには、全部適用される。

なんだか直感的ではないけど、最初は「url_forをオーバーライドしてしまおうか」などと考えてたので、だいぶすっきりしました。できるならいいかと。



コメント

コメントしてください
お名前:
入力しなければ「匿名さん」。20字以内。

メール:
入力しても表示しません

URL:
入力すればリンクが貼れます


コメント: