ruby-on-rails - 在登录之前和之后保留 Rails 4 设计 session ID

标签 ruby-on-rails devise

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

但是,我失去了对用户的跟踪,因为用户的 session ID 在登录时发生了变化。因此,我无法将用户放入购物车(存储在 redis 中)的项目与将它们放入之后的用户相关联用户登录到应用程序。

有谁知道如何规避这种情况?

谢谢。

干杯!

最佳答案

找到了解决办法。需要做的就是设置 session.options[:renew] = false 并且 session 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

关于ruby-on-rails - 在登录之前和之后保留 Rails 4 设计 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31341477/

相关文章:

ruby-on-rails - Rails 控制台命令将不起作用。终端也启动了

ruby-on-rails - 在登台时引发禁用属性错误

ruby-on-rails - rails 上的 ruby 。用户模型的管理属性有多安全?

ruby-on-rails - 如何在Rails Devise中自动生成密码?

ruby-on-rails - 使用 Devise 和 STI 设计具有多种用户类型的 Rails 应用程序

ruby-on-rails - 具有连接和顺序的不同记录

mysql - 按位置搜索(企业)数据库

ruby-on-rails - 您如何从 ruby​​ on rails 中的 Controller 引用另一个类?

ruby-on-rails - Devise-使用自定义Devise::FailureApp重定向时如何获取用户

ruby-on-rails - Ruby Rack 中间件从反向代理丢失 warden session