所以这可能与我的JS请求来自uploadify有关,但基本上我想做的是在uploadify JS请求上,我想设置一个会话值。这似乎不起作用。
然而,当我发出HTML请求时,确实如此。
我有uploadify传递我的会话密钥和值作为请求的参数...我需要做些什么来验证和设置会话?
答案 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/
祝你好运!