ruby-on-rails – Rails 4会话不会在请求之间保持不变
My Rails 3.2应用程序有一个名为LaunchController的控制器,它为其他Web应用程序提供api,以便它们可以嵌入在我的应用程序中生成和评分的测验.
当外部应用程序发布到LaunchController时,LaunchController #create使用OAuth进行身份验证,缓存一个知道外部应用程序的对象@tool,将缓存密钥存储在会话会话[:launch_tool_cache_key]中并重定向到另一个控制器AttemptsController #new渲染一个测验.当用户提交答案时,AttemptsControllert #start会对他们的测验进行评分并使用@tool将评分发布回外部应用程序. 3.2中一切正常. 上周我(终于!)将我的应用程序升级到Rails 4.2.我对迁移的其余部分进行了排序,现在应用程序正在开发中.除了这个过程. 问题在于持久化会话[:launch_tool_cache_key],其中包含用于从缓存中检索序列化@tool的密钥,以便我可以将成绩发送回外部应用程序.我的日志显示缓存键存储在LaunchController中,但在重定向到AttemptsController #new后,会话密钥消失了. 我尝试过的事情: >评论出protect_from_forgery 解决方法
将对象保存到会话密钥可能会出现问题.看这里
Rails session not persisting after redirects 此问题与您的问题类似. 如果是这样,似乎你最好将你的@tool存储到数据库中(例如它可能是Redis),将一个密钥存储到会话中并在重定向后通过密钥检索它. 如果这没有帮助,请提供一些更详细的解释(可能包含一些代码) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |