Могу ли я принудительно перезагрузить сеанс rails из строки?

StackOverflow https://stackoverflow.com/questions/1237426

  •  11-09-2019
  •  | 
  •  

Вопрос

У меня есть стороннее приложение (индикатор выполнения загрузки - swfupload), которое я использую с rails 2.3.3, которое не может передавать информацию о сеансе или файлы cookie.Однако я могу упаковать данные сеанса из моего приложения в URI, который оно будет использовать для загрузки файла, и извлечь их, когда я получу файл.

Проблема в том, что ни один из волшебных хаков, которые я вижу в сети, не работает с 2.3.3.Я не знаю конкретных деталей почему, но я даже попробовал минимальное демонстрационное приложение RESTful, которое использует swfupload, и его рвет так же, как и мое.

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

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

Вы уловили идею.

Нет, я не заинтересован в том, чтобы пробовать еще одно решение для загрузки для Rails.У меня было достаточно неудачных попыток, поэтому я собираюсь придерживаться этого решения, потому что простой ответ на мой текущий вопрос решит мою проблему.

Это было полезно?

Решение

Вам необходимо использовать промежуточное программное обеспечение rack для восстановления сеанса на основе данных, отправленных вместе с запросом 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/

Другие советы

Не уверен, подходит ли вам этот вариант, но мое исправление swfuploader было простым, потому что у нас есть сеансы DB.

_options['session_id'] = params[ _options['session_key'] ]   
session = Session.find_by_session_id(_options['session_id'])      
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top