Ruby on rails Rails:如何排除赢得';不到期?
接下来,在我的Rails应用程序中设置一个记住我的令牌,尽管Cookie正在“工作”,但是在Ruby on rails Rails:如何排除赢得';不到期?,ruby-on-rails,ruby-on-rails-3,session,cookies,session-cookies,Ruby On Rails,Ruby On Rails 3,Session,Cookies,Session Cookies,接下来,在我的Rails应用程序中设置一个记住我的令牌,尽管Cookie正在“工作”,但是在Cookie.permanent[…]=…和Cookie[…]=…之间似乎没有什么区别 奇怪的是,检查Chrome和Safari中的cookie(我到目前为止测试的所有cookie)显示它们分别在“浏览器关闭”和“会话”时过期。但是我可以验证退出和重新启动站点将保留cookie,并且用户仍保持登录状态!?!所以,似乎还有别的事情在发生 我甚至不知道从哪里开始解决这个问题,也没有太多关于Rails cook
Cookie.permanent[…]=…
和Cookie[…]=…
之间似乎没有什么区别
奇怪的是,检查Chrome和Safari中的cookie(我到目前为止测试的所有cookie)显示它们分别在“浏览器关闭”和“会话”时过期。但是我可以验证退出和重新启动站点将保留cookie,并且用户仍保持登录状态!?!所以,似乎还有别的事情在发生
我甚至不知道从哪里开始解决这个问题,也没有太多关于Rails cookies和/或行为异常的会话的经验有什么想法吗?
以下是一些代码FWIW:
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
...
会话\u controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.where('lower(email) = ?', params[:email].downcase).first
if user && user.authenticate(params[:password])
sign_in user
redirect_back_or user
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
end
def destroy
sign_out
redirect_to root_url
end
end
class sessioncontroller
我今天一直在努力解决这个问题,它与Rails无关,而与Chrome有关(我想Opera也是如此)。自Chrome版本19以来,当设置了继续我离开的地方时,他们不会遵循,也不会在浏览器关闭时删除任何cookie。因此,“记住我”功能无法按预期工作,因为您希望在关闭浏览器时删除非永久性cookie。这是WontFix状态下的chromium错误:
在我的情况下(也可能是你的情况),情况更奇怪,因为我没有使用“继续我离开的地方”选项,而且Chrome仍然没有在浏览器关闭时删除cookie。在发现其他bug后,我意识到这实际上是一个选项,当Google Chrome关闭时,继续运行后台应用程序,阻止这些cookie被删除。我不知道/不记得该选项是如何在我的浏览器中启用的,或者它现在是否是默认行为
不管怎样,我的“记住我”复选框现在正在按预期工作。希望你的问题也得到了解决,如果没有,至少这会对你有所帮助