Angular 在http请求之前执行的拦截器
Angular interceptor executed before http request
我正在使用 MEAN 应用程序,但我遇到了令牌拦截器的问题。它应该在用户使用此代码登录后应用 headers:
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
const token = localStorage.getItem('token');
let req = request;
if (token) {
req = request.clone({
setHeaders: {
authorization: `Bearer ${token}`
}
});
}
}
但是,我调试了代码,它在登录调用 api 之前执行(因此没有登录、没有令牌、没有用户数据等)。因此它没用,因为我需要令牌才能设置 headers,如代码所示。
您可以将它与 pipe 和 tap(或任何其他 RxJs 运算符)结合使用,以便在响应调用到达您的服务之前对其进行操作。
logging-request-and-response-pairs
intercept(req: HttpRequest<any>, next: HttpHandler) {
// change req here before being send
return next.handle(req)
.pipe(
tap(
// to access data, or use map to manipulate it.
)
);
我正在使用 MEAN 应用程序,但我遇到了令牌拦截器的问题。它应该在用户使用此代码登录后应用 headers:
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
const token = localStorage.getItem('token');
let req = request;
if (token) {
req = request.clone({
setHeaders: {
authorization: `Bearer ${token}`
}
});
}
}
但是,我调试了代码,它在登录调用 api 之前执行(因此没有登录、没有令牌、没有用户数据等)。因此它没用,因为我需要令牌才能设置 headers,如代码所示。
您可以将它与 pipe 和 tap(或任何其他 RxJs 运算符)结合使用,以便在响应调用到达您的服务之前对其进行操作。
logging-request-and-response-pairs
intercept(req: HttpRequest<any>, next: HttpHandler) {
// change req here before being send
return next.handle(req)
.pipe(
tap(
// to access data, or use map to manipulate it.
)
);