В моем приложении angular я просто использую перехватчик, чтобы прочитать токен JWT и использовать его по запросу HTTP / HTTPS.
import {Injectable} from '@angular/core';
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
import {Observable} from 'rxjs';
import {AuthService} from '../services/auth.service';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
constructor(public service: AuthService) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (this.service.isAuthenticated()) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${this.service.token}`
}
});
}
return next.handle(request);
}
}
Я также определяю модуль root следующим образом:
@NgModule({
declarations: [
...
],
imports: [
...
AppRoutingModule,
],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptor,
multi: true
}
]
,
bootstrap: [AppComponent]
})
export class AppModule {
}
Токен берется во время выполнения из службы, внедренной в перехватчик. Если вам нужно просмотреть весь проект, вы можете найти его на github .
. Возможное решение - делегировать при определении перехватчика приложения возможность извлекать токен JWT. Таким образом, все вызовы приложений будут обрабатываться одинаково.
Надеюсь, это поможет.