我正在尝试实现电子商务应用程序。在其中,我允许用户在登录之前浏览产品并将它们放入购物车。我只在结帐时提示用户登录。
但是,我失去了对用户的跟踪,因为用户的 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/