【问题标题】:Can I force a rails session to reload from a string?我可以强制 Rails 会话从字符串重新加载吗?
【发布时间】:2010-11-17 06:28:00
【问题描述】:

我有一个第三方应用程序(一个上传进度条 - swfupload),它与 rails 2.3.3 一起使用,它无法传递会话信息或 cookie。但是,我可以将应用程序中的会话数据打包到 URI 中,它将用于上传文件并在我获取文件时检索该文件。

问题是,我在 2.3.3 的网络上看到的任何魔法黑客都没有。我不知道原因的具体细节,但我什至尝试了使用 swfupload 的最小 RESTful 演示应用程序,它和我的一样呕吐。

我所需要的只是一种从已知包含会话数据的字符串中强制重新加载会话的方法。大致如下:

if session[:user_id]
  do stuff
else
  session.reload(session_string_from_uri)
end

你明白了。

不,我对尝试另一种 Rails 上传器解决方案不感兴趣。我已经受够了失败,所以我会坚持使用这个解决方案,因为对我当前问题的简单回答将解决我的问题。

【问题讨论】:

    标签: ruby-on-rails session reload


    【解决方案1】:

    您需要使用机架中间件从随 Flash 请求一起发布的数据中恢复会话。这是一篇很好的文章解释了这一点:http://jetpackweb.com/blog/2009/10/21/rails-2-3-4-and-swfupload-rack-middleware-for-flash-uploads-that-degrade-gracefully/comment-page-1/

    【讨论】:

      【解决方案2】:

      不确定这是否适合您,但我的 swfuploader 修复很简单,因为我们有数据库会话。

      _options['session_id'] = params[ _options['session_key'] ]   
      session = Session.find_by_session_id(_options['session_id'])      
      

      【讨论】:

      • 我想避免去数据库进行会话,但考虑到这已经变成了什么,我可能没有选择。我不会有很多用户,所以我将删除数据库中超过一个小时左右的任何会话行,以减小数据库大小。我仍然对锻造我已建立的链条中最后一个环节的方法感兴趣,但现在我愿意尝试。有点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多