Sas*_*asa 1 http-headers angular-http-interceptors angular angular7
我正在尝试处理响应标头,在某些特定情况下,当刷新令牌从后端发送时,用新令牌替换标头中的旧令牌并再次发送请求。经过数小时的研究,我没有找到任何适用于 Angular 7 的解决方案。我成功拦截请求,但未能成功替换令牌并再次发送相同的请求。
我这样做:
export class RefreshTokenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).pipe(
tap(event => {
},
(error: any) => {
if (error.status == 401 && error.error.token) {
// what to do here
// error.error.token is new generated token
}
})
);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
我找到了解决方案:
export class RefreshTokenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).pipe(
map((event: HttpEvent<any>) => {
return event;
}),
catchError((error: HttpErrorResponse) => {
if (error.status == 401 && error.error.token) {
localStorage.setItem('token', error.error.token);
req = req.clone({headers: req.headers.set('Authorization', 'Bearer ' + error.error.token)});
req = req.clone({headers: req.headers.set('Accept', 'application/json')});
return next.handle(req);
}
}));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4902 次 |
| 最近记录: |