查找当前用户轨道的问题



我想找到登录的current_user。我在应用程序控制器中使用此方法:

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end

我可以访问current_user从显示方法在我的控制器,但在任何其他方法它是nil。这很奇怪,因为它之前是工作的,现在我不知道我做了什么,但它不再工作了。谁能帮我一下?

鉴于您最后的评论,您的问题仅与会话有关。它没有链接到您的current_user方法的定义。

默认情况下,当HTTP POST请求中没有身份验证令牌时,Rails 3应用程序会重置会话。该行为与Rails 4略有不同(取决于配置),但您最终会遇到类似的问题。

我猜你的ajax查询不包含身份验证令牌,因此警告WARNING: Can't verify CSRF token authenticity,因此空会话。在一个空的会话中,你的current_user方法将始终返回nil,除非你在一个GET请求中,并且自认证以来你没有做任何POST请求。

我没有在这里写一个解决方案,因为它不简单(它取决于你使用的javascript框架),它与你原来的问题没有链接。

您应该阅读这个问题的答案:警告:Can't verify CSRF令牌真实性rails

最新更新