vla*_*its 5 ruby session ruby-on-rails ruby-on-rails-3.2 ruby-on-rails-4
我的Rails 3.2应用程序有一个称为LaunchController的控制器,该控制器为其他Web应用程序提供了一个api,因此它们可以将生成和评分的测验嵌入到我的应用程序中。
当外部应用程序发布到LaunchController时,LaunchController#create使用OAuth进行身份验证,缓存一个@tool了解外部应用程序的对象,在会话中存储一个缓存密钥,session[:launch_tool_cache_key] 然后重定向到另一个AttemptsController#new呈现测验的控制器。当用户提交答案时,AttemptsControllert#create会对测验进行评分,并使用@tool将评分发布回外部应用程序。
在3.2中一切正常。
上周,我(终于!)将我的应用程序升级到Rails 4.2。我对其余的迁移进行了排序,该应用程序现在可以在开发中使用了。除了这个过程。
问题在于保留session[:launch_tool_cache_key]包含用于@tool从缓存中检索序列化的密钥的,因此我可以将等级发送回外部应用程序。我的日志显示,缓存密钥已存储在中LaunchController,但是重定向到AttemptsController#new会话密钥后就消失了。
我尝试过的事情:
protect_from_forgeryskip_before_filter :verify_authenticity_token将对象保存到会话密钥可能会出现问题。看这里
这个问题看起来和你的很相似。
如果是这样,似乎您最好将其存储@tool到数据库中(例如,可以是 Redis),将密钥存储到会话中,并在重定向后通过密钥检索它。
如果这没有帮助,请提供一些更详细的解释(也许包含一些代码)
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |