2011-01-20 37 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