我的Rails 3.2的應用程序有一個名爲LaunchController控制器,用於其他Web應用程序提供了一個API,使他們能夠嵌入生成並在我的應用取得了測驗。軌道4屆沒有堅持跨請求
當外部應用程序發送到LaunchController,LaunchController#create
進行認證使用OAuth,緩存的對象@tool
知道該外部應用程序,存儲在會話session[:launch_tool_cache_key]
一個緩存鍵和重定向到另一個控制器AttemptsController#new
呈現一個測驗。當用戶提交答案時,AttemptsControllert#會爲他們的測驗創建成績,並使用@tool將成績發回給外部應用程序。
一切都在3.2工作正常。
上週我(終於!)升級我的應用程序到Rails 4.2。我對剩餘的遷移進行了排序,現在應用程序正在開發中。除了這個過程。
問題在於堅持包含我用來從緩存中檢索序列化的@tool
的密鑰的session[:launch_tool_cache_key]
,因此我可以將等級發送回外部應用程序。我的日誌顯示緩存鍵被存儲在LaunchController
,但重定向後AttemptsController#new
會話密鑰不見了。
事情我已經嘗試:
- 註釋掉
protect_from_forgery
- 加入
skip_before_filter :verify_authenticity_token
我的猜測(這是真的只是一個猜測):新[strong_parameters(HTTPS:/ /github.com/rails/strong_parameters)在應用程序中的某個地方......阻止參數應記錄在某種程度上造成這種由一些邏輯,因此檢查'登錄/ development.log'這一點。 – Carpetsmoker