我试图让Laravel 5.1删除我的Cookie,但即使我使用我的重定向返回它也不会删除。
return redirect('/voucher')->withCookie(Cookie::forget($cookie));
我做错了吗?
答案 0 :(得分:19)
也许我错了,但你可能在调用Cookie::forget($cookie)
时使用cookie对象代替cookie名称。除非$cookie
是包含cookie名称的字符串,否则你应该尝试这样的事情:
return redirect('/voucher')->withCookie(Cookie::forget('cookie_name'));
答案 1 :(得分:13)
我知道这已经是一个陈旧且回答的问题,但我最近到了这里,如果我是正确的,那么cookie需要排队等待下一个回复。
您可以通过在答案中已经描述的@ Jan.J手动将cookie添加到响应中来实现。但如果您需要内联,这可能对您有用:
Cookie::queue(
Cookie::forget('cookieName')
);
CookieJar
会将所有排队的Cookie传递给下一个响应。
答案 2 :(得分:3)
在我的情况下,cookie中存储了array
,因此提供的方法都没有。应删除数组,提供完全一对数组:
Cookie::queue(Cookie::forget('array_name[provide_key]'));
答案 3 :(得分:1)
首先,确保已使用Cookie class
关键字导入use
,如下所示:
use Cookie;
接下来,创建一个函数并删除按名称
的cookieCookie::queue(
Cookie::forget('cookie_name_first')
);
Cookie::queue(
Cookie::forget('cookie_name_second')
);
答案 4 :(得分:0)
公共功能funname(CookieJar $ cookie)
Button = sender as Button;
string content = button.Content.ToString();
foreach (DataTable table in dsr.Tables)
{
if (table.TableName == content)
{
dataGrid1.ItemsSource = table.DefaultView;
dtselect = table;
}
}
$ cookie-> queue(cookie()-> forget('user_email')); $ cookie-> queue(cookie()-> forget('user_password'));
session()->flush();
答案 5 :(得分:0)
您也可以这样操作:
redirect('/')->cookie(cookie()->forget('my_super_cookie_name'));
答案 6 :(得分:0)
不幸的是,以上都不对我有用,我不确定此版本的Laravel(5.1)是否是特定问题。
我确实设法使用原始PHP来使其工作,通过用已经过期的cookie覆盖现有的cookie,我还必须指定一个路径来使其工作。但是,它不像使用外墙那样优雅。
setcookie('COOKIE_NAME', time() - 3600, '/');
答案 7 :(得分:0)
最近我仍然在本地主机上时遇到此问题,但问题是我写了一些代码,这些代码在尝试覆盖会话配置文件的过程中不正常。 因此 默认的laravel
Cookie::queue(
Cookie::forget('name')
) ;
如果您未进行任何更改,则应该可以正常工作 session.php配置文件。 检查出来,你应该很好。 如果进行了一些更改,请尝试确保您的代码符合标准,并且一切正常。
答案 8 :(得分:0)
您的代码很完美,所以还有其他问题。
Cookie有点棘手,而使事情变得更糟的是取决于客户端的实现;各种浏览器可能会以不同的方式处理cookie边缘情况,甚至可能有long-standing bugs与它们的cookie处理有关。
“删除” Cookie实际上涉及向该Cookie发送更新,但具有过去的到期日期。来自rfc 6265:
最后,要删除Cookie,服务器将返回Set-Cookie标头 过期日期为过去的日期。服务器将成功 仅在路径和域属性位于 Set-Cookie标头与Cookie为 已创建。
如果您的Laravel代码看起来不错,如原始问题所示,建议您在浏览器的开发工具中检查Cookie。例如,Chrome的“网络”标签上有一个“ Cookies”标签,其中显示了“请求Cookie”和“响应Cookie”。您可能会发现原始Cookie与要取消设置发送的Cookie之间存在细微的差别。根据上述RFC,域中的差异(即使只是前导点)也会破坏cookie的移除。