Ruby on rails Rails:如何排除赢得';不到期?

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

接下来,在我的Rails应用程序中设置一个记住我的令牌,尽管Cookie正在“工作”,但是在
Cookie.permanent[…]=…
Cookie[…]=…
之间似乎没有什么区别

奇怪的是,检查ChromeSafari中的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被删除。我不知道/不记得该选项是如何在我的浏览器中启用的,或者它现在是否是默认行为

不管怎样,我的“记住我”复选框现在正在按预期工作。希望你的问题也得到了解决,如果没有,至少这会对你有所帮助