gpt4 book ai didi

ruby-on-rails - Rails 4 session 不会跨请求持续存在

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:00 25 4
gpt4 key购买 nike

我的 Rails 3.2 应用程序有一个名为 LaunchController 的 Controller ,它为其他 Web 应用程序提供 API,以便它们可以在我的应用程序中嵌入生成和评分的测验。

当外部应用程序发布到 LaunchController 时,LaunchController#create 使用 OAuth 进行身份验证,缓存一个知道外部应用程序的对象 @tool,将缓存键存储在 session session[:launch_tool_cache_key] 并重定向到呈现测验的另一个 Controller AttemptsController#new。当用户提交他们的答案时,AttemptsControllert#create 会为他们的测验打分并使用@tool 将成绩发回外部应用程序。

在 3.2 中一切正常。

上周我(终于!)将我的应用程序升级到 Rails 4.2。我对其余的迁移进行了排序,应用程序现在正在开发中。除了这个过程。

问题在于保留 session[:launch_tool_cache_key],它包含我用来从缓存中检索序列化 @tool 的 key ,这样我就可以发送成绩了返回到外部应用程序。我的日志显示缓存 key 存储在 LaunchController 中,但在重定向到 AttemptsController#new 后 session key 消失了。

我尝试过的事情:

  • 注释掉 protect_from_forgery
  • 添加 skip_before_filter :verify_authenticity_token

最佳答案

将对象保存到 session key 可能会出现一些问题。看这里

Rails session not persisting after redirects

这个问题看起来和你的很相似。

如果是这样,您最好将您的@tool 存储到数据库中(例如,它可以是 Redis),将一个 key 存储到 session 中,并在重定向后通过 key 检索它。

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

关于ruby-on-rails - Rails 4 session 不会跨请求持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com