【问题标题】:Requests from Uploadify 3.1 in Rails 3.2.2 with Authlogic don't yield a current_user来自带有 Authlogic 的 Rails 3.2.2 中 Uploadify 3.1 的请求不会产生 current_user
【发布时间】:2012-05-10 20:28:06
【问题描述】:

我正在使用带有 Rails 3.2.2 的 Uploadify 3.1。我使用 Authlogic 来处理身份验证。 Authlogic 提供了一个current_user 方法,该方法为发出请求的用户提供。

当我尝试使用 Uploadify 3.1 上传某些文件时,在操作中查找时未设置 current_user,它给出了nil。 Uploadify 2.1.4 没有发生这种情况。这是我如何调用uploadify:

jQuery('#something').uploadify({

      uploader        : '#{some_path_from_rails_routes}',
      swf             : '/uploadify/uploadify.swf',
      cancelImg       : '/uploadify/cancel.png',
      fileTypeDesc    : 'FileNames',
      auto            : true,
      removeCompleted : false,
      buttonText      : 'Some Label',
      formData        : {
        '_http_accept': 'application/javascript',
        '#{session_key_name}' : encodeURIComponent('#{u(cookies[session_key_name])}'),
        'authenticity_token'  : encodeURIComponent('#{u(form_authenticity_token)}'),
      }
});

有什么想法吗?谢谢!

【问题讨论】:

    标签: ruby-on-rails-3 uploadify authlogic


    【解决方案1】:

    Uploadify 的 flash 组件使用不同于 Rails 用于其会话的 cookie 存储。您可以使用flash_cookie_session gem 来解决这个问题。

    从其文档看来,您需要将 formData 修改为如下内容:

    {
      "<%= key = Rails.application.config.session_options[:key] %>" : "<%= cookies[key] %>"
      "<%= request_forgery_protection_token %>" : "<%= form_authenticity_token %>",
    }
    

    【讨论】:

    • 从 3.1.1.1 版本开始,它现在已内置到 uploadify-rails gem 中。只需在 uploadify-rails 之前将 flash_cookie_session 包含在您的 Gemfile 中,它就会在幕后为您处理一切。
    • @IsaacBetesh 哪个uploadify-rails gem?这个好像是近空壳,2年没上传了——github.com/nragaz/uploadify-rails
    • Filip Tepper 的:github.com/filiptepper/uploadify-rails(这是您可以在 ruby​​gems.org 上找到的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2017-03-24
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多