Rails Cookie无法保存-访客设计用户

时间:2019-01-18 00:16:54

标签: ruby-on-rails ruby http cookies devise

我正在按照Devise方法为我的Rails应用https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user

创建来宾用户

我使用cookie而不是会话(如下代码),以尝试根据每个客户端设计维护相同的用户,但是,当我关闭浏览器并再次打开时,cookie不会保存并创建一个新用户。我已经在Chrome和Firefox上进行过尝试,并且两者的行为相同。

def create_guest_user
  u = User.new(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(100)}@example.com", guest: true)
  u.save!(:validate => false)
  cookies.signed.permanent[:guest_user_id] = u.id
  u
end

当我检查chrome上的会话到期时,其浏览器不会永久关闭。我还试图明确设置到期日期,但仍然遇到相同的问题

enter image description here

有人对这个问题和可能的解决方案有想法吗?

1 个答案:

答案 0 :(得分:0)

尝试

response.set_cookie(:guest_user_id, {
  value: u.id,
  path: '/',                 # cookie remains all pages in this domain
  expires: 2.weeks.from_now, # cookie expires after 2 week
  httponly: true,            # prevent javascript modify this cookie
})