shr*_*eyj 7 cookies ruby-on-rails-3
我有一个 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)
...
Run Code Online (Sandbox Code Playgroud)
但cookies.delete cookie, :domain => :all似乎使第一个调用无用,就好像 cookie 是在 www.xyz.com 上设置的,然后它就不会被删除。
关于如何删除可能存在于两个不同域中的 cookie 的任何想法?
好吧,Rails 不允许在一次请求中两次删除同名 cookie,尽管它们已针对不同的域进行了设置。
假设您正在尝试注销,双重重定向是我想到的最好的方法:
def logout
cookie.delete(:user_id)
redirect_to logout_all_path
end
def logout_all
cookie.delete(:user_id, domain: :all)
end
Run Code Online (Sandbox Code Playgroud)
不知道Rails 6 是否解决了这个问题,所以PR 不会受到伤害。
删除 cookie 时cookie.delete(:user_id)与显式表单相同cookie.delete(:user_id, domain: nil)。
在代码中指定域不是强制性的。
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |