首页 > 解决方案 > 如果我们有效的令牌,Angular6 auth0/angular2-jwt isTokenExpired 函数总是返回 false

问题描述

我正在使用 auth0/angular2-jwt 包来处理 Angular6 应用程序中基于 JWT 令牌的身份验证。如果我们给了有效的令牌isTokenExpired函数总是返回 false

我尝试过的以下代码:

   localStorage.setItem('id_token', response['token']);
   const helper = new JwtHelperService();
   helper.isTokenExpired(localStorage.getItem('id_token')

constructor(
        private http: Http,
        private helper: JwtHelperService
    ) {
    }

public handleResponse(response: Response){
    localStorage.setItem('id_token', response['token']);  
 console.log(this.helper.isTokenExpired(localStorage.getItem('id_token')));

}

我已经尝试了以上两种方法,它总是返回false

提前致谢。

标签: angularangular6angular2-jwt

解决方案


您应该使用 { tokenNotExpired } 'angular2-jwt'; 您将需要以下实施:

在你的 app.module.ts 里面

import { tokenNotExpired } from 'angular2-jwt';
. 
.
.
 @NgModule({

      providers: [
       .
       .
       { provide: 'tokenNotExpired', useValue: tokenNotExpired }, 
      ]

 })

在您的服务内部,您需要检查令牌是否过期:

constructor( @Inject('tokenNotExpired') private tokenNotExpired)

isTokenExpired(idToken){
    return this.tokenNotExpired(idToken);
}

推荐阅读