我试图清除应用程序保存在浏览器中的所有信息,无论是存储在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之前清除所有内容。
任何建议我在做什么错? 谢谢!
答案 0 :(得分:0)
我假设您使用ngx-cookie-service吗?
请检查代码的执行顺序,并将路径设置为'/'
我一直在摆弄它,似乎设置一个具有相同名称的cookie会覆盖现有的cookie。因此,如果顺序不正确,您将不会看到Cookie被删除。
我没有时间检查您提到的路径部分。我没有实现带有路径的路由器来查看是否可以帮助您。
使用以下方法设置Cookie: Service.setcookie('name','value',int,'/'); 应该工作正常
并使用以下命令将其删除: CookieService.deleteAll() 也可以在网站ngOnInit()
中使用我很确定它的执行顺序,并以'/'表示路径。
那很好。
抱歉,没有好的代码,我在电话atm上会在以后仍需要时更新。我不得不离开我的电脑。
答案 1 :(得分:0)
在开发环境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');
}
See ngx-cookie-service documentation
对于个人删除:
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 & 安全 |对于 Cookie
答案 2 :(得分:0)
我也遇到了同样的问题。 如果您的 cookie 是自定义的,这意味着安全、严格、路径,那么您需要使用规范进行清除。
this._cookieService.delete("cookie name","/","domain name",true,"None");
我相信这对你有用。