我正在按照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上的会话到期时,其浏览器不会永久关闭。我还试图明确设置到期日期,但仍然遇到相同的问题
有人对这个问题和可能的解决方案有想法吗?
答案 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
})