Angular 8-使用CookieService

时间:2019-12-04 12:41:20

标签: angular cookies jsessionid

我试图清除应用程序保存在浏览器中的所有信息,无论是存储在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();
}

sessionStoragelocalStorage似乎已清除,但我可以看到Cookie尚未清除。 我需要通过浏览器手动清除Cookie。

此外,有时我看到cookie被保存在根路径下,有时我看到它在相对根路径下。我不确定是什么原因造成的,并且有时它会发送错误的cookie,因此我想在获取新cookie之前清除所有内容。

enter image description here

任何建议我在做什么错? 谢谢!

3 个答案:

答案 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");

我相信这对你有用。