如果我们有效的令牌,Angular6 auth0 / angular2-jwt isTokenExpired函数始终返回false

时间:2018-09-20 11:05:59

标签: angular angular6 angular2-jwt

我正在使用auth0 / angular2-jwt pakage处理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

谢谢。

2 个答案:

答案 0 :(得分:0)

您应该使用{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);
}

答案 1 :(得分:-1)

  

使用tokenNotExpired('id_token')

下面的链接可能会有所帮助。祝你好运。

https://github.com/auth0/angular2-jwt/issues/334#issuecomment-293968046