-2

奇怪的定义:我的应用程序的会话模型似乎工作正常。cookie (user.remember_token = SecureRandom.urlsafe_base64) 被存储,登录仍然存在。生活很好。

然而,当用户编辑他们的个人资料并点击提交时,他们就会被注销。

这个 SO Question让我认为 Rails 是因为 XSRF 而结束会话。

但为什么?

而不是在这里发布我所有的代码,一个链接得到了一切:https ://github.com/chiperific/arcwmi_reports

帮助!

4

1 回答 1

1

您的问题出在User模型中:

before_save :create_remember_token

def create_remember_token
  self.remember_token = SecureRandom.urlsafe_base64
end

这将在保存用户时修改 remember_token - 即在创建或更新用户时。并且当用户更新他/她的个人资料时,remember_token 会更改。这会导致登录系统注意到 cookie 不再与用户匹配 - 并将用户注销。

修复 - 使用before_create而不是before_save.

于 2013-01-09T03:50:30.907 回答