1

几天以来,我的产品服务器出现问题。Rails 3.0.20 似乎丢失了来自 iPhone 的 2 个 JSON 请求之间的会话。

登录没问题,我可以在日志中看到它。

但是下一个称为“拉”的方法没有会话!

Started GET "/w/services/pull" for 109.1.101.218 at Tue Sep 24 10:12:43 +0000 2013
  Processing by ServicesController#pull as JSON
  Parameters: {"locale"=>"w"}

USER_AGENT
app/2.1.1 (iphone; ios 7.0.1; scale/2.00)
SESSION

如您所见,在下面的此方法中会话为空:

  def user_required!
    logger.info "SESSION"
    logger.info session[:user_id]

    return true if session[:user_id]
    return redirect_to(:controller => "/users", :action => "login")
  end

我不知道为什么对于某些用户来说,会话​​没有保持在 2 个请求之间。我试图禁用protect_from_forgery,但问题是一样的(在我的情况下,第二个请求是GET ...)。

我将所有日志级别都放在调试状态,我没有更多信息。


编辑:使用服务器上的日志时间,我去查看会话表。我可以看到丢失的会话看起来“缩短了”。

一个正常的会话数据:

BAh7ByIMdXNlcl9pZGkCZiwiEF9jc3JmX3Rva2VuIjFPKzdReDd3bHpWcjl6 SGRNNW1NMk4wNjZOYTJEU0R6MmlxdGxDMWRXM25B==

似乎有问题的会话(更短):

BAh7BjoMdXNlcl9pZGkCThU==

也许这可能是问题的根源......


编辑 2: _csrf_token 未创建到第二个会话数据示例中,但我不知道为什么。

4

0 回答 0