クッキーレス対応

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をオーバーライドしてしまおうか」などと考えてたので、だいぶすっきりしました。できるならいいかと。



コメント

コメントしてください

closed.