奇怪的定义: 我的应用程序的会话模型似乎工作正常。存储cookie(user.remember_token = SecureRandom.urlsafe_base64),登录仍然存在。生活很美好。
然而,当用户编辑他们的个人资料并点击提交时,他们就会被注销。
This SO Question让我觉得Rails因为XSRF而结束了会话。
但为什么?
不是在这里发布我的所有代码,而是通过一个链接获取所有代码:https://github.com/chiperific/arcwmi_reports
帮助!
答案 0 :(得分: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
。