加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 4会话不会在请求之间保持不变

发布时间:2020-12-17 02:08:58 所属栏目:百科 来源:网络整理
导读:My Rails 3.2应用程序有一个名为LaunchController的控制器,它为其他Web应用程序提供api,以便它们可以嵌入在我的应用程序中生成和评分的测验. 当外部应用程序发布到LaunchController时,LaunchController #create使用OAuth进行身份验证,缓存一个知道外部应用程
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
>添加skip_before_filter:verify_authenticity_token

解决方法

将对象保存到会话密钥可能会出现问题.看这里

Rails session not persisting after redirects

此问题与您的问题类似.

如果是这样,似乎你最好将你的@tool存储到数据库中(例如它可能是Redis),将一个密钥存储到会话中并在重定向后通过密钥检索它.

如果这没有帮助,请提供一些更详细的解释(可能包含一些代码)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读