保留Rails 4设计会话标识之前和之后登录后

时间:2015-07-10 13:01:50

标签: ruby-on-rails devise

我正在尝试实施电子商务应用。在其中,我允许用户浏览产品并在登录前将它们放入购物车。我只提示用户在结账时登录。

但是,由于用户的会话ID在登录时发生了变化,我失去了对用户的跟踪。由于这个原因,我无法将用户放入购物车的商品关联起来(存储在redis中) )在用户登录应用程序后将其放入的用户。

有没有人知道如何规避这个?

感谢。

干杯!

1 个答案:

答案 0 :(得分:3)

找到解决方案。所有需要完成的工作都是设置session.options [:renew] = false,会话ID在&之前仍然是相同的。登录后。

请参阅下面的实施

class SessionsController < Devise::SessionsController
  respond_to :json

  def create
    super
    session.options[:renew] = false
  end

  def destroy
    logger.info "Logging out: #{current_user.email}; Session Id: #{session.id}"
    $redis.del "cart_#{session.id}"
    super
  end

end