我有一个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的任何想法?
答案 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)
相同。
不必在代码中指定域。