在大多数情况下,Railscast #274 - Remember Me在我的Rails应用中设置记住我的令牌,虽然Cookie“正常”但{{1}之间似乎没有区别}和cookies.permanent[…] = …
。
奇怪的是,检查 Chrome 和 Safari 中的Cookie(我迄今为止所测试的所有内容)都显示它们在“浏览器关闭”和“会议“分别。但我可以验证退出并重新启动网站将保留cookie并且用户仍然登录!?!所以,似乎还有其他事情正在发生......
我甚至不知道从哪里开始对此进行故障排除,并且对Rails cookie和/或行为不端的会话没有太多经验。 有什么想法吗?
这里有一些代码FWIW:
cookies[…] = …
sessions_controller.rb
module SessionsHelper
def sign_in(user)
if params[:remember_me]
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
else
cookies[:remember_token] = user.remember_token
end
end
def current_user
@current_user ||= User.find_by_remember_token!(cookies[:remember_token]) if cookies[:remember_token]
end
...
答案 0 :(得分:0)
我今天一直在与这个斗争,它不会与Rails相关,而是Chrome(我猜Opera也是如此)。自Chrome版本19开始,当选项继续我停止的地方时,它们不会跟随standard (section 4.3.1),也不会删除浏览器关闭时的任何Cookie。所以记住我的功能不能按预期工作,因为您希望在关闭浏览器时删除非永久性cookie。这是具有WontFix状态的铬虫:http://code.google.com/p/chromium/issues/detail?id=128513
在我的情况下(也可能是你的),情况更加奇怪,因为我没有使用继续我离开的地方选项,但Chrome仍未删除浏览器上的Cookie 。在发现this其他错误后,我意识到实际上选项是在Google Chrome关闭时继续运行后台应用,以防止删除这些Cookie。我不知道/记得我的浏览器是如何启用该选项的,或者它现在是否是默认行为......
无论如何,我的remember_me复选框正在按预期工作。希望你的修复也得到解决,如果没有,至少这会对你有帮助。