我的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