Angular2-jwt:拦截请求的api路由

时间:2018-11-13 11:28:10

标签: angular angular2-jwt

我正在实现jwt刷新机制。我在Angular 7中使用auth0/angular2-jwt。当我访问受保护的路由时,我正在通过Authorization标头中的access_token向/ api / v1 / protected发送请求。当我需要刷新jwt令牌时,必须使用授权标头中的refresh_token将请求发送到/ api / v1 / auth / refresh。 我不知道如何根据api路由选择要发送的令牌。

app.module.ts

import { JwtModule, JWT_OPTIONS } from '@auth0/angular-jwt';
import { HttpClientModule } from '@angular/common/http';

import { TokenService } from './services/token.service';

export function jwtOptionsFactory(tokenService) {
  return {
    tokenGetter: () => {
      return tokenService.getAsyncToken();
    },
      whitelistedDomains: [
        'localhost',
        'localhost:80',
        'localhost:443',
        'localhost:4200', 
      ],
      blacklistedRoutes: [],
      throwNoTokenError: false,

  }
}
...
@NgModule({
...
  imports: [
    HttpClientModule,
    JwtModule.forRoot({
      jwtOptionsProvider: {
        provide: JWT_OPTIONS,
        useFactory: jwtOptionsFactory,
        deps: [TokenService]
      }
    }),

  ],
...
})

token.service.ts

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class TokenService {

  constructor() { }

  getAsyncToken(){
    // This is the part in question
    if (route=='/api/v1/auth/refresh') {
       return localStorage.getItem('refresh_token');
    } 
    return localStorage.getItem('access_token');

  }


}

我的计划B是将angulat-jwt中的刷新路由列入黑名单,并编写一个自定义拦截器。 但是我想知道我是否有些混乱。可以在我的令牌服务中拦截api调用(检查api路由)吗?

0 个答案:

没有答案