我正在尝试清除我的应用程序在浏览器中保存的所有信息,无论是在 sessionStorage、localStorage 还是 cookie 中。
我添加了这个小方法来执行此操作,并在我的一个组件的
ngOnInit
中调用它:
export class SomeComponent implements OnInit {
constructor(private cookieService: CookieService) {}
ngOnInit(): void {
this.clearAppData();
}
private clearAppData(): void {
sessionStorage.clear();
localStorage.clear();
this.cookieService.deleteAll();
}
sessionStorage
和localStorage
似乎被清除了,但我可以看到饼干没有被清除。
我需要通过浏览器手动清除cookie。
而且,有时看到cookie是保存在根路径下的,有时看到是相对根路径下的。我不确定这是什么原因,而且有时它会发送错误的 cookie,我想在获取新的 cookie 之前清除所有内容。
有什么建议我做错了什么吗? 谢谢!
我也面临着同样的问题。 如果您的 cookie 是定制的,这意味着安全、严格、路径,那么您需要明确规范。
this._cookieService.delete("cookie name","/","domain name",true,"None");
我相信这对你应该有用。
我假设你使用 ngx-cookie-service?
请检查代码的执行顺序并将路径设置为“/”
我一直在摆弄它,似乎设置一个同名的cookie会覆盖现有的cookie。因此,如果顺序不正确,您将不会看到您的 cookie 被删除。
我没有时间检查你提到的路径部分。我没有实现带有路径的路由器来看看我是否可以帮助你。
设置 cookie: Service.setcookie('名称', '值', int, '/'); 应该可以正常工作
并删除它: CookieService.deleteAll() 也可以在 ngOnInit() 内工作
我很确定它的执行顺序并提供路径为“/”。
这样就可以了。
抱歉没有好的代码,我在电话自动柜员机上,如果仍然需要,稍后会更新。我必须离开我的电脑。
开发环境中
localhost
;任何使用 UI 框架的客户端应用程序都需要调整服务器会话 cookie 代码,如下所示。
注意:在您的后端服务器上,您需要将
httpOnly
的 cookie 设置更改为 False
,如下代码
cookie: {
secure: false, //set this to true in production over https
httpOnly: false, //set this to false in development to test delete
....
....
}
稍后,在您的 Angular 服务代码中使用注销方法,如下所示:
logout(){
this.cookieService.delete('<your-cookie-name>', '/', 'localhost', false, 'Lax');
}
对于单独删除:
delete( name: string, path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax'): void;
批量删除:
deleteAll( path?: string, domain?: string, secure?: boolean, sameSite: 'Lax' | 'None' | 'Strict' = 'Lax' ): void;
重要提示:在生产中,两者都应设置为 True | httpOnly 和安全 |为了一块饼干
您无法在前端删除
httpOnly
cookie,因为它无法通过 JS 获取,如这篇文章中所述
要删除
httpOnly
cookie,您必须对后端进行 HTTP 调用并删除数据库中的 cookie。您可以为 cookie 设置新的过期日期,使其从客户端过期。