查找当前用户rails的问题

时间:2011-08-25 10:38:49

标签: ruby-on-rails ruby model-view-controller

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

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

我可以在我的控制器中从show方法访问current_user,但在任何其他方法中它都是nil。 这很奇怪,因为它之前正在工作,现在我不知道我做了什么,但它不再起作用了。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

鉴于您的上次评论,您的问题仅与会话有关。它与您current_user方法的定义无关。

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

我猜你的ajax查询不包含身份验证令牌,因此警告WARNING: Can't verify CSRF token authenticity,因此是空会话。使用空会话时,current_user方法将始终返回nil,除非您在GET请求中并且自身份验证后未发出任何POST请求。

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

您应该阅读这个问题的答案:WARNING: Can't verify CSRF token authenticity rails