如果有401响应,Angular拦截器会注销应用程序。Angular拦截器是用于在HTTP请求和响应之间进行处理的机制。当应用程序发送HTTP请求时,拦截器可以拦截请求并进行一些处理,例如添加身份验证令牌等。当服务器返回401未授权的响应时,表示用户身份验证失败,拦截器可以捕获该响应并执行相应的操作,例如注销应用程序。
在Angular中,可以通过创建一个拦截器来处理401响应。拦截器可以通过实现HttpInterceptor
接口来定义自己的逻辑。在拦截器中,可以检查响应的状态码,如果是401,则可以执行注销应用程序的操作,例如清除用户的身份验证令牌、重定向到登录页面等。
以下是一个示例拦截器的代码:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// 在请求头中添加身份验证令牌等逻辑
return next.handle(request).pipe(
catchError(error => {
if (error.status === 401) {
// 执行注销应用程序的操作,例如清除用户的身份验证令牌、重定向到登录页面等
}
return throwError(error);
})
);
}
}
在Angular应用程序中,可以将拦截器提供给HttpClient
模块,以便在发送HTTP请求时自动应用拦截器。可以通过在AppModule
中的providers
数组中注册拦截器来实现:
import { NgModule } from '@angular/core';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { AuthInterceptor } from './auth.interceptor';
@NgModule({
imports: [HttpClientModule],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
]
})
export class AppModule { }
这样,当应用程序发送HTTP请求时,拦截器会拦截响应并执行相应的操作,包括注销应用程序。
关于Angular拦截器的更多信息,可以参考腾讯云的相关文档:Angular拦截器。
领取专属 10元无门槛券
手把手带您无忧上云