所以這可能與我的來自uploadify的JS請求有關,但基本上我想要做的是在uploadify JS請求上,我想設置會話值。這似乎並不奏效。在javascript請求上創建會話密鑰
然而,當我做出一個HTML請求時,它的作用。
我有uploadify傳遞我的會話密鑰和值作爲參數與請求...是否有我需要做的事情來驗證和設置會話?
所以這可能與我的來自uploadify的JS請求有關,但基本上我想要做的是在uploadify JS請求上,我想設置會話值。這似乎並不奏效。在javascript請求上創建會話密鑰
然而,當我做出一個HTML請求時,它的作用。
我有uploadify傳遞我的會話密鑰和值作爲參數與請求...是否有我需要做的事情來驗證和設置會話?
是的,不幸的是它有點棘手,但完全可能的。
首先你需要一個非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/
祝您好運!
因此,我已經爲每個示例提供了中間件,並且已經生成了適當的會話信息,但爲何這不適用於使用cookie存儲會話?如果中間件正在生成有效的cookie,那麼會不會有任何會話存儲方法工作?它甚至看起來像所有的例子都使用cookie存儲會話。 – brewster 2011-01-20 19:13:49