Angular2-jwt: перехватить запрашиваемый маршрут API - PullRequest
0 голосов
/ 13 ноября 2018

Я реализую механизм обновления jwt. Я использую auth0 / angular2-jwt с Angular 7. Когда я получаю доступ к защищенному маршруту, я отправляю запрос в / api / v1 / protected с моим access_token в заголовке авторизации , Когда мне нужно обновить токен jwt, я должен отправить запрос в / api / v1 / auth / refresh с моим refresh_token в заголовке авторизации. Что я не могу понять, так это как выбрать, какой токен я отправлю, основываясь на маршруте 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');

  }


}

Мой план Б состоит в том, чтобы занести в черный список маршрут обновления в angulat-jwt и написать собственный перехватчик. Но я хотел бы знать, если я что-то напутал. Можно ли перехватить вызов API (проверить маршрут API) в моей службе токенов?

...