今天在使用ng zorro的upload组件进行文件上传。然后遇到了Authorization问题。研究后就算自己通过nzCustomRequest 或者 使用nzWithCredentials=true,依然有问题。
后来在angular官网研究httpclient,才发现有HttpInterceptor这个机制,后来在代码中搜索了一下,果然有AbpHttpInterceptor,其中addAuthorizationHeaders就是加认证的啦。
export declare class AbpHttpInterceptor implements HttpInterceptor {
protected configuration: AbpHttpConfiguration;
private _tokenService;
private _utilsService;
private _logService;
constructor(configuration: AbpHttpConfiguration);
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
protected normalizeRequestHeaders(request: HttpRequest<any>): HttpRequest<any>;
protected addXRequestedWithHeader(headers: HttpHeaders): HttpHeaders;
protected addAspNetCoreCultureHeader(headers: HttpHeaders): HttpHeaders;
protected addAcceptLanguageHeader(headers: HttpHeaders): HttpHeaders;
protected addTenantIdHeader(headers: HttpHeaders): HttpHeaders;
protected addAuthorizationHeaders(headers: HttpHeaders): HttpHeaders;
protected handleSuccessResponse(event: HttpEvent<any>, interceptObservable: Subject<HttpEvent<any>>): void;
protected handleErrorResponse(error: any, interceptObservable: Subject<HttpEvent<any>>): Observable<any>;
private itemExists<T>(items, predicate);
}
好吧,然后在Module果断加入就可以了。上传通过通过。
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AbpHttpInterceptor, multi: true },
]
})