недействительный токен подлинности - PullRequest
0 голосов
/ 01 февраля 2011

Я не понимаю, я уже отправляю и ключ сеанса, и токен аутентификации следующим образом:

начал POST "? / Test_cases / 20 / upload_script authenticity_token = IeH8aJgyM1zgW50MXN9UMj1P2wXKO8ir6lvPr1By5ow = & _ waftt2_session = BAh7CUkiD3Nlc3Npb25faWQGOgZFRiIlM2M2YTA3M2NjM2VkZDFmYzBiZTA3MTE2NWYwY2E3MTlJIhBfY3NyZl90b2tlbgY7AEZJIjFJZUg4YUpneU0xemdXNTBNWE45VU1qMVAyd1hLTzhpcjZsdlByMUJ5NW93PQY7AEZJIhV1c2VyX2NyZWRlbnRpYWxzBjsARkkiAYA1YjY5NzQ4YjI3NWYzYzJkOTI2NjE3YmI3NzM3ZTQ3NGM2MmFiNjJhY2U2MzI4ZWUwOTcyOWQ2Y2NkNTVlNzViZWI5ZmQzZjkxNGUxYmIzYTQ0MWQ0ODQ3YTVlMDY5YTMyZmFlMDQwMGVmN2NkYjRhZGFkMDgxYmFkOWQxOTJkZQY7AFRJIhh1c2VyX2NyZWRlbnRpYWxzX2lkBjsARmkCSAI = - 3833637df52e559ca3bb3eb6d0d6b5a611d82bf4"

и весь ключ сессии также устанавливается в env ['HTTP_COOKIE'] - да, ключ и значение

что мне здесь не хватает?

1 Ответ

0 голосов
/ 01 февраля 2011

У меня была точно такая же проблема с swfupload.

Насколько я помню:

Это происходит из-за того, что Flash неправильно устанавливает cookie в своем первом запросе (второй и последующие запросы в порядке). Я использовал промежуточное программное обеспечение Rack для копирования ключа сеанса в env ['HTTP_COOKIE], но он не работал должным образом.

Мои расследования привели меня к ошибке в объекте Rack :: Request, которая не позволяет ему правильно устанавливать куки, если env ['HTTP_COOKIE'] изначально пуст.

Вот код промежуточного программного обеспечения, который в итоге исправил его для меня:

class FlashUploadMiddleware
  def initialize(app,session_key)
   @app = app
   @session_key = session_key
  end

  def call(env)
    env['HTTP_COOKIE'] = "bugfix=true" unless env['HTTP_COOKIE']
    if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
      req = Rack::Request.new( env )
      req.cookies[ @session_key ] = req["session_id"] unless req["session_id"].nil?
    end
    @app.call(env)
  end

end

Этот класс должен находиться в файле с именем flash_upload_middleware.rb где-нибудь в вашем пути загрузки. Он инициализируется из файла .rb в config / initialisers

ActionController::Dispatcher.middleware.use( 
    FlashUploadMiddleware,
    ActionController::Base.session_options[:key] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...