Angular 即使在令牌到期或注销后,浏览器上也未清除JWT令牌

Angular 即使在令牌到期或注销后,浏览器上也未清除JWT令牌,angular,authentication,jwt,Angular,Authentication,Jwt,我们有一个带有Angular 2的spring引导应用程序,对于身份验证,我们使用JWT。我遇到了一个问题-即使在令牌过期之后,然后注销并再次登录,过期的JWT令牌仍然可以在请求头上使用。因此后端仍然验证旧的JWT令牌,而不是新的。我需要清除浏览器缓存以使其正常工作 我看到令牌存储在SessionStorage中,下面的操作也在logout()上清除了令牌 但这也没有清除旧令牌。如何从浏览器中清除令牌?在深入研究代码后,我发现头被定义为“const”。当我将它们更改为“let”时,所有标记都开始

我们有一个带有Angular 2的spring引导应用程序,对于身份验证,我们使用JWT。我遇到了一个问题-即使在令牌过期之后,然后注销并再次登录,过期的JWT令牌仍然可以在请求头上使用。因此后端仍然验证旧的JWT令牌,而不是新的。我需要清除浏览器缓存以使其正常工作

我看到令牌存储在SessionStorage中,下面的操作也在
logout()上清除了令牌


但这也没有清除旧令牌。如何从浏览器中清除令牌?

在深入研究代码后,我发现头被定义为“const”。当我将它们更改为“let”时,所有标记都开始正常工作。

确保您的令牌存储在sessionStorage中,而不是localStorage中,如果是localStorage.removeItem('authenticationtoken')@willmaz令牌存储在sessionStorage.sessionStorage.removeItem('authenticationtoken')中应该从web存储中删除您的令牌…您可以使用F12->application->session storage在浏览器中直接尝试,然后在控制台中执行上面的代码,并验证令牌是否已经存在。当我单击注销按钮时,我可以看到令牌已从F12->application->session storage中删除,但我仍然收到了在后端保存旧令牌。您可以将登录服务添加到帖子中吗?
logout() {
    if (this.principal.isAuthenticated()) {
        sessionStorage.removeItem('authenticationtoken');
        this.authServerProvider.logout().subscribe();            
    }
    this.principal.authenticate(null);
}