Angular 8 - 使用 CookieService 清除 cookie

问题描述 投票:0回答:4

我正在尝试清除我的应用程序在浏览器中保存的所有信息,无论是在 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 之前清除所有内容。

有什么建议我做错了什么吗? 谢谢!

angular cookies jsessionid
4个回答
4
投票

我也面临着同样的问题。 如果您的 cookie 是定制的,这意味着安全、严格、路径,那么您需要明确规范。

this._cookieService.delete("cookie name","/","domain name",true,"None");

我相信这对你应该有用。


1
投票

我假设你使用 ngx-cookie-service?

请检查代码的执行顺序并将路径设置为“/”

我一直在摆弄它,似乎设置一个同名的cookie会覆盖现有的cookie。因此,如果顺序不正确,您将不会看到您的 cookie 被删除。

我没有时间检查你提到的路径部分。我没有实现带有路径的路由器来看看我是否可以帮助你。

设置 cookie: Service.setcookie('名称', '值', int, '/'); 应该可以正常工作

并删除它: CookieService.deleteAll() 也可以在 ngOnInit() 内工作

我很确定它的执行顺序并提供路径为“/”。

这样就可以了。

抱歉没有好的代码,我在电话自动柜员机上,如果仍然需要,稍后会更新。我必须离开我的电脑。


1
投票

开发环境中

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');

}

请参阅 ngx-cookie-service 文档

对于单独删除:

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 和安全 |为了一块饼干


0
投票

您无法在前端删除

httpOnly
cookie,因为它无法通过 JS 获取,如这篇文章

中所述

要删除

httpOnly
cookie,您必须对后端进行 HTTP 调用并删除数据库中的 cookie。您可以为 cookie 设置新的过期日期,使其从客户端过期。

© www.soinside.com 2019 - 2024. All rights reserved.