2008年11月23日日曜日

FileReferenceのセッション継続

Flexでのアップロード、ダウンロードを行う場合
「FileReference」を使用しますが、
WebServiceなどを通じて接続されたセッション情報を継続できません。
下記行わなくてもIEでは操作できましたが、
FirefoxやCromeでは不可能でした。おそらくCookieの関係でしょうね。


私の場合はTomcat→Strutsを使用してサービスを構築していますので
ActionForm値を使用してアップロードを行います。
Session継続を行っても新しいFormのインスタンスを生成してしまいます。
なので初回インスタンスを生成した時にRequestから

  1. request.getSession().getId()  


の値を取得して、Flexに返します。
FlexではセッションIDを何らかの形で保存しておきます。
でFileReferenceを使用する際に使用するURLRequestが使うURLに
jsessionidとして設定してあげます。

  1. var request:URLRequest = new URLRequest();  
  2. request.url = uploadUrl + ";jsessionid=" + sessionId;   
  3. reference.upload(request);  


すると同一のセッションで値をやりとりすることが可能です。
能書きから行くとおそらくログイン情報の共有等もこれでできるでしょう。

セキュリティ的にこれでよいのかは不問の方向で!

0 件のコメント: