2011-01-20 69 views
0

所以這可能與我的來自uploadify的JS請求有關,但基本上我想要做的是在uploadify JS請求上,我想設置會話值。這似乎並不奏效。在javascript請求上創建會話密鑰

然而,當我做出一個HTML請求時,它的作用。

我有uploadify傳遞我的會話密鑰和值作爲參數與請求...是否有我需要做的事情來驗證和設置會話?

回答

0

是的,不幸的是它有點棘手,但完全可能的。

首先你需要一個非cookie存儲會話。如果您使用Cookie存儲會話,則需要切換到數據庫/ memcache/redis或類似的會話存儲。

如何會話正常工作是鐵軌給你一個會話ID的cookie。當你的瀏覽器進行了一次正常的請求發送的cookie來導軌,因此軌馬上知道如何尋找它的數據庫,會議,發現它,並將其裝入會話[]。

當你使用uploadify或類似的技術時,請求沒有與它一起發送cookie數據,因此rails不知道是誰在發送請求,並且使整個會話根本不起作用。

所以解決這個問題的方法是讓uploadify發送會話ID作爲參數,這聽起來像你可能正在做的事情,但是你需要添加一些Rack Middleware。

機架中間件基本上是一個位於初始請求和導軌之間的層,它將查看參數,並且如果它看到正常http參數中的session_id,它會將其變成看起來像cookie的東西,在它到達鐵軌之前。所以基本上Rails認爲它是一個普通的cookie,然後所有會話的東西開始工作,並且rails可以知道誰在提出請求。

有這些好幾個例子網上,這樣,而不是重新書寫我只是鏈接:

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

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

祝您好運!

+0

因此,我已經爲每個示例提供了中間件,並且已經生成了適當的會話信息,但爲何這不適用於使用cookie存儲會話?如果中間件正在生成有效的cookie,那麼會不會有任何會話存儲方法工作?它甚至看起來像所有的例子都使用cookie存儲會話。 – brewster 2011-01-20 19:13:49