在javascript请求上创建会话密钥

时间:2011-01-20 07:14:44

标签: javascript ruby-on-rails session uploadify

所以这可能与我的JS请求来自uploadify有关,但基本上我想做的是在uploadify JS请求上,我想设置一个会话值。这似乎不起作用。

然而,当我发出HTML请求时,确实如此。

我有uploadify传递我的会话密钥和值作为请求的参数...我需要做些什么来验证和设置会话?

1 个答案:

答案 0 :(得分:0)

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

首先,您需要一个非cookie存储会话。如果您使用的是cookie存储会话,则需要切换到数据库/ memcache / redis或类似的会话存储。

会话通常如何工作,rails会为您提供一个具有会话ID的cookie。当您的浏览器发出正常请求时,它会将cookie发送到rails,因此rails会立即知道在其数据库中查找哪个会话,找到它并将其加载到session []中。

当您使用uploadify或类似技术时,请求没有随附的cookie数据,因此rails不知道是谁发出请求,并且整个会话内容根本不起作用。

所以修复它的方法是让uploadify将会话ID作为参数发送,这听起来像你可能正在做的那样,但是你需要添加一些Rack Middleware。

机架中间件基本上是位于初始请求和rails之间的层,它将查看参数,如果它在正常的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/

祝你好运!