【发布时间】:2012-10-25 06:29:04
【问题描述】:
我想我可能对 Rails 会话有一些误解,所以请多多包涵,我可能没有用最好的方式表达我的问题。
我正在开发一个带有 Ruby on Rails 后端的 iPhone 应用程序。我有一个网络视图,默认情况下会转到一个控制器的索引操作(并使用会话),而在后台,一堆 API 调用会转到另一个控制器(并且不需要使用会话)。
问题是,我的 Web 视图设置的会话似乎被 API 调用所覆盖。我的登台服务器非常慢,因此请求有很多时间相互重叠 - 我在日志中看到的基本上是这样的:
Request A (first controller) starts. Session is empty.
Request B (second controller) starts. Session is empty.
Request A finishes. Request A has done authentication, and stored the user ID in the session. Session contains user ID.
Request B finishes. Session is empty.
Request C starts. Session is empty - not what I want.
现在,奇怪的是请求 B 不应该向会话写入任何内容。
我确实有从会话中读取的前后过滤器 - 例如:
user = User.find_by_id(session[:id])
或
logger.debug session.inspect
如果我删除所有这些,那么一切都会按预期工作 - 会话内容由请求 A 设置,并且当请求 C 启动时它们仍然存在。
所以。我想我错过了关于会话如何工作的一些东西。为什么从会话中读取会覆盖它?我应该以其他方式访问它吗?我是否完全走错了路,问题出在其他地方?
感谢您提供任何见解!
【问题讨论】:
-
同样的事情也发生在我身上。您找到解决方案了吗?
标签: ruby-on-rails session