我的拦截器没有启动.我不知道我做错了什么.我试过了所有能找到的解决办法.
拦截器只是没有拦截http请求.所以没有添加"Authorization"标头.
token.interseptor.ts
(try OnInit
查看是否触发了控制台日志(log))
import { Injectable, OnInit } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs';
import { AuthService } from '../services/auth.service';
@Injectable({
providedIn: 'root'
})
export class TokenInterceptor implements HttpInterceptor, OnInit {
constructor(private AuthService: AuthService) {
}
ngOnInit(): void {
console.log('Working? ');
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('request- ', request);
const tokenizedReq = request.clone({
setHeaders: { Authorization: `Bearer ${this.AuthService.getToken()}` }
});
return next.handle(tokenizedReq);
}
app.module.ts
:
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { TokenInterceptor } from './utility/token.interceptor';
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true }
],
如下所示发送HTTP API调用:
const userPackage = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(user)
}
const respose = await fetch('http://localhost:3000/api/user/login', userPackage)
const loggedIn = await respose.json();