Помимо того, что @Pardeep Jain уже упомянул, вы можете добавить перехватчик (> Angular версия 4, вы упомянули, что вы используете 5) для вашего HttpClient, который автоматически добавит заголовки авторизации для всех запросов.
Если вам нужно пройти проверку подлинности только для одного запроса, лучше упростить задачу и использовать решение Pardeep.
Если вы хотите пройти проверку подлинности для большинства ваших запросов, добавьте перехватчик.
модуль, скажем app.module.ts
@NgModule({
//...
providers: [
//...
{
provide: HTTP_INTERCEPTORS,
useClass: JwtInterceptor,
multi: true
},
//...
]
//...
})
и ваш JWT-перехватчик, скажем, jwt.interceptor.ts
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
constructor(private injector: Injector, private router: Router) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const authReq = req.clone({
headers: req.headers.set('Authorization', /* here you fetch your jwt */this.getToken())
.append('Access-Control-Allow-Origin', '*')
});
return next.handle(authReq).do((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
// do stuff with response if you want
}
}, (response: HttpErrorResponse) => { });
}
getToken() {
let headers: HttpHeaders = new HttpHeaders();
headers = headers.append('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
return this.http.post('http://myapi/api.php/user', {
username: 'admin',
password: 'password'
}, { headers });
}
}
Если вы хотите что-то прочитать, больше здесь: https://medium.com/@ryanchenkie_40935/angular-authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8