我是 Angular 的新手,我正在尝试通过在 Angular 6 上使用 angular-jwt 来验证我的身份验证令牌。验证令牌的目的是在用户登录时允许使用不同的按钮,并在用户登录时显示不同的按钮集他们注销。
这是我的身份验证服务。
import { JwtHelperService } from '@auth0/angular-jwt';
constructor(private http:HttpClient, public jwtHelper:JwtHelperService)
{}
loggedIn()
{
console.log(this.jwtHelper.isTokenExpired(this.authtoken));
}
这是我的 HTML 代码
<a *ngIf="!authService.loggedIn()" [routerLink]="['/login']"><button class.....
<a *ngIf="!authService.loggedIn()" [routerLink]="['/register']"><button class.....
<a *ngIf="authService.loggedIn()" [routerLink]="['/profile']"><button class....
<a *ngIf="authService.loggedIn()" [routerLink]="['/profile']"><button class.....
现在我的问题是在我登录之前它在控制台上正确登录为真,但是在我登录并转到个人资料页面后,按钮不会改变,因为它仍然记录为真,然后再次记录为假。
我认为这是由于在 app 模块中使用了令牌 getter 函数,但我不确定如何实现它。
我的应用模块组件:
....
imports: [BrowserModule,
[JwtModule.forRoot({
config: {tokenGetter:tokenGetter,whitelistedDomains['localhost:3000']}
})]
providers: [AuthService,JwtHelperService]
})
export function tokenGetter() {
return localStorage.getItem('access_token');
}