gpt4 book ai didi

jquery - Uploadify、Flash session 和 Rails 2.3.8

转载 作者:行者123 更新时间:2023-12-01 05:06:24 25 4
gpt4 key购买 nike

我正在使用Uploadify 2.1.4和rails 2.3.8。我正在尝试应用 FlashSessionCookieMiddleware 修复程序,该修复程序应该在 uploadify 的基于 flash 的请求期间维护 session 信息。我在阅读了其中一些指南后应用了此修复程序:

但是,我的 session 信息仍然没有被保留。下面是我的应用程序配置:

# config/environment.rb 

config.load_paths += %W( #{RAILS_ROOT}/config/middleware )

...

# config/middleware/flash_session_cookie_middleware.rb

require 'rack/utils'

class FlashSessionCookieMiddleware
def initialize(app, session_key = '_session_id')
@app = app
@session_key = session_key
end

def call(env)
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
params = ::Rack::Utils.parse_query(env['QUERY_STRING'])
env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil?
end
@app.call(env)
end
end

ActionController::Dispatcher.middleware.insert_before(ActionController::Base.session_store, FlashSessionCookieMiddleware, ActionController::Base.session_options[:key])

...

// My Uploadify JS 
'fileDataName' : 'file',
'queueID' : 'fileQueue',
'auto' : true,
'multi' : true,
'method' : 'get',
'scriptData' : { session_key: '<%= request.session_options[:key] %>'}

我的中间件代码加载正确,这是rake中间件显示的内容:

use Rack::Lock
use ActionController::Failsafe
use FlashSessionCookieMiddleware, "_my_app_session"
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActiveRecord::SessionStore, #<Proc:0xb7176760@(eval):8>
use ActionController::ParamsParser
use Rack::MethodOverride
use Rack::Head
use ActionController::StringCoercion
run ActionController::Dispatcher.new

然后,我尝试测试最后一个请求是否具有有效的 session /cookie 信息:

# In Controller
logger.info "Session: #{session.inspect}"

它只在 log/development.log 中打印一个空哈希:

Session: {}

[嗅探]有人能看出我做错了什么吗?

最佳答案

我能够按照此处发布的步骤使其在 2.3.8 上运行:http://railstips.org/blog/archives/2009/07/21/uploadify-and-rails23/

我唯一需要修改的是将 flash_session_cookie_middleware.rb 修改为以下内容:

require 'rack/utils'

class FlashSessionCookieMiddleware
def initialize(app, session_key = '_session_id')
@app = app
@session_key = session_key
end

def call(env)
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
@session_key = ActionController::Base.session_options[:key]
req = Rack::Request.new(env)
unless req.params[@session_key].nil?
env['HTTP_COOKIE'] = "#{@session_key}=#{req.params[@session_key]}".freeze
end
end

@app.call(env)
end
end

关于jquery - Uploadify、Flash session 和 Rails 2.3.8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com