删除rails中的cookie

时间:2014-05-15 07:14:17

标签: ruby-on-rails-3 cookies

我有一个cookie可以存在于这些域中的任何一个域 - www.xyz.com或.xyz.com。我无法通过代码删除cookie。由于它可以存在于任何一个域上,我假设做以下操作应该就足够了:

...
cookies.delete cookie  #delete cookie if it exists on current domain(www.xyz.com)
cookies.delete cookie, :domain => :all #delete cookie if it exists on root (.xyz.com)
...

但是cookies.delete cookie, :domain => :all似乎是第一次调用无效,好像cookie已在www.xyz.com上设置,然后它就不会被删除。

有关如何删除可能存在于两个不同域上的Cookie的任何想法?

1 个答案:

答案 0 :(得分:1)

好吧,Rails不允许在一个请求中两次删除相同名称的cookie,尽管它们是为不同的域设置的。

假设您要注销,双重重定向是我想到的最好的方法:

def logout
  cookie.delete(:user_id)
  redirect_to logout_all_path
end

def logout_all
  cookie.delete(:user_id, domain: :all)
end

不知道Rails 6是否可以解决此问题,因此PR不会受到伤害。

删除Cookie cookie.delete(:user_id)时与显式cookie.delete(:user_id, domain: nil)相同。

不必在代码中指定域。