2011-01-20 8 views
0

これは私のJSリクエストがuploadifyから来ていることと関係しているかもしれませんが、基本的に私がしたいのはuploadify JSリクエストで、セッション値を設定します。これはうまくいかないようです。JavaScriptのリクエストでセッションキーを作成する

しかし、私がHTMLリクエストをするときは、そうします。

私はセッションキーと値をリクエストに渡してアップロードする必要があります。これは、認証とセッションの設定に必要なものですか?

答えて

0

はい、残念ながら、少し難解ですが完全に可能です。

まず、Cookieストア以外のセッションが必要です。 Cookieストアセッションを使用している場合は、データベース/ memcache/redisまたは同様のセッションストアに切り替える必要があります。

セッションが正常に機能するのは、レールがセッションIDを持つCookieを提供することです。あなたのブラウザが通常の要求をすると、それはクッキーをレールに送ります。したがって、レールはデータベース内でどのセッションを探してすぐに見つけ出し、それを見つけてセッション[]にロードします。

uploadifyなどの手法を使用している場合、リクエストにはCookieデータが含まれていないため、誰がリクエストを行っているのかわからず、セッション全体がまったく機能しません。

これを修正する方法は、セッションIDをパラメータとして送信することです。セッションIDをパラメータとして送信することができます。ただし、ミックスにいくつかのラックミドルウェアを追加する必要があります。

Rack Middlewareは、基本的に最初のリクエストとレールの間にあるレイヤーで、パラメータを調べ、通常のhttpパラメータでsession_idを確認すると、これはCookieのように見えますそれが軌道に乗る前に。本質的にレールは、それが普通のクッキーを持っている普通のユーザーだと思っています。その後、セッションのすべての作業が始まり、誰がリクエストを行っているのかを知ることができます。

再書き込みよりも、そうではなく、オンラインでこれらのかなりの数の例がありますが、私はちょうどリンクします:

http://railstips.org/blog/archives/2009/07/21/uploadify-and-rails23/

http://metautonomo.us/2010/07/09/uploadify-and-rails-3/

幸運を!

+0

私は例ごとにミドルウェアを用意しており、適切なセッション情報を生成していますが、なぜこれがクッキーストアセッションを使用して動作しないのですか?ミドルウェアが有効なCookieを生成している場合、セッションストアメソッドは機能しませんか?すべての例がCookieストアセッションを使用しているように見えます。 – brewster

+0

クッキーストアで動作させるには何らかの方法があるかもしれませんが、なぜそれがうまくいかないのか理解しているのは、クッキーストアでは、クライアント(ブラウザ)がすべてのセッションデータを(もちろんエンコードされた)サーバーに送ります要求。私が気づいているアップロードをアップロードする方法はありません。データベースセッションではなく、クライアントはセッションIDのみを送信し、サーバはそのセッションデータを最後まで検索します。 – spotman

+0

hmm ...格納されている唯一のCookieデータはセッションキー/値で、uploadifyからパラメータとして渡されます。ミドルウェアはそれをクッキーとして設定します。セッションデータとは別に、他に必要なデータは何ですか? – brewster

関連する問題