スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Merb]merb-authを使ってみる

Merbに最初から準備されているmerb-authという認証を
以下のページを参考にやってみました。

認証を用いたHelloWorld

Flash(Actionscript)のFileReference.uploadを使用してファイルを
アップロードしている箇所があるのですがなぜか認証がうまくいかないという
問題が出ました。

どうやらクッキーが渡されていないようです。

じゃあ手動でクッキーを格納したらどうかと以下のような感じでやってみました。

# Javascript
function getCookie(){
 return document.cookie;
}

# Actionscript
var request:URLRequest = new URLRequest(url);
var cookies = flash.external.ExternalInterface.call("getCookie").toString();
request.requestHeaders = new Array(new URLRequestHeader("Cookie", cookies));
fileRef.upload(request);



試してみましたが、サーバー側には値が送られてきませんでした。

もう少し調べてみると、リファレンス

URLRequest パラメータを受け取るメッソドすべてが requestHeaders プロパティをサポートしているわけではありません。呼び出すメソッドのマニュアルを参照してください。例えば、FileReference.upload() メソッドおよび FileReference.download() メソッドは、URLRequest.requestHeaders プロパティをサポートしていません。



という記述がありました。
ファイルアップロードの時にクッキーを設定したりするのは厳しそうです。

ということで、パラメータの一部に含めてサーバーに送ることにします。

# Actionscript
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables["cookies"] = ExternalInterface.call("getCookie").toString();
request.data = variables;
fileRef.upload(request);



サーバー側でファイルアップロードを待ち受けているところだけ
認証を行う前に、POSTパラメータからクッキーを取り出して
本来クッキーが格納されるところに手動で入れてやります。

# vi app/helpers/global_helpers.rb
module Merb
 module GlobalHelpers
  # helpers defined here available to all views.
  def provide_cookies_from_params
   cookies = params[:cookies]
   cookies.split(";").each do |cookie|
    temp = cookie.split("=")
    request.cookies[temp[0]] = temp[1]
   end
  end
 end
end

# vi app/controllers/items.rb
class Items < Application
 before :provide_cookies_from_params, :only => :upload
 before :ensure_authenticated

 def index
 end

 def upload
 end
end



とりあえず動いたからOKにしました。

その後調べてみたところ、こんなライブラリもあるみたいです。
http://code.google.com/p/as3httpclientlib/
http://code.google.com/p/as3httpclientlib/wiki/Examples

これは便利そう。

コメントの投稿

非公開コメント

プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。