Ruby on rails rails向用户提供了错误的会话cookie

Ruby on rails rails向用户提供了错误的会话cookie,ruby-on-rails,facebook,session,cookies,Ruby On Rails,Facebook,Session,Cookies,我们在Rails 3.2.13应用程序中使用omniauth和facebook登录。它在sessions\u控制器中有相当标准的样板代码来管理用户会话。它使用CookieStore进行会话。以下是控制器的会话: class SessionsController < ApplicationController skip_authorization_check def new redirect_to '/auth/facebook' end def create

我们在Rails 3.2.13应用程序中使用omniauth和facebook登录。它在sessions\u控制器中有相当标准的样板代码来管理用户会话。它使用CookieStore进行会话。以下是控制器的会话:

class SessionsController < ApplicationController
  skip_authorization_check

  def new
    redirect_to '/auth/facebook'
  end


  def create
    auth = request.env["omniauth.auth"]
    user = User.where(:provider => auth['provider'], 
                      :uid => auth['uid'].to_s).first || User.create_with_omniauth(auth)
# Reset the session after successful login, per
# 2.8 Session Fixation – Countermeasures:
# http://guides.rubyonrails.org/security.html#session-fixation-countermeasures
    reset_session
    session[:user_id] = user.id
    user.add_role :admin if User.count == 1 # make the first user an admin
    if user.email.blank?
      redirect_to edit_user_path(user), :alert => "Please enter your email address."
    else
      redirect_to root_url, :notice => 'Signed in!'
    end

  end

  def destroy
    reset_session
    redirect_to root_url, :notice => 'Signed out!'
  end

  def failure
    redirect_to root_url, :alert => "Authentication error: #{params[:message].humanize}"
  end

end
class sessioncontrollerauth['provider'],
:uid=>auth['uid'].to_s).first | | User.create_with_omniauth(auth)
#根据,在成功登录后重置会话
#2.8会话固定-对策:
# http://guides.rubyonrails.org/security.html#session-固定对策
重置会话
会话[:user\u id]=user.id
user.add_role:admin如果user.count==1#将第一个用户设为管理员
如果user.email.blank?
重定向到编辑用户路径(用户),:alert=>“请输入您的电子邮件地址。”
其他的
将\u重定向到root\u url,:notice=>“已登录!”
结束
结束
def销毁
重置会话
将\u重定向到root\u url,:notice=>“已注销!”
结束
def故障
将_重定向到根目录_url,:alert=>“身份验证错误:#{params[:message]。人性化}”
结束
结束

前几天,我们团队的一名成员正在测试我们的产品版本,然后去登录应用程序。当她浏览该应用程序时,她发现她已经以另一个用户的身份登录,该用户从未使用过该计算机,事实上也从未进入过我们的大楼。根据她的经验和我们随后的分析,应用程序似乎为她提供了一个会话cookie。经过大量研究,我不明白这是怎么发生的,即rack/rails框架可能会给错误的用户提供会话cookie。以前有人见过或听说过这种情况吗?关于如何调试此功能或将日志放在何处以便更深入地了解可能出现的问题,您有什么建议吗?

会话存储?乘客?memcache?不确定您是否询问我们是否正在使用这些东西或建议我们切换到它们?但是我们使用的是瘦的。CookieStore用于存储会话信息。我们已经部署在Heroku上,目前不使用memcache。您是否找到解决此问题的方法?我也遇到了同样的事情。不,从来没有。在我问了这个问题后不久,我们就开始使用Desive,此后就再也没有看到这个问题。不确定这是开关还是很难复制。