Я реализую механизм обновления 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) в моей службе токенов?