【发布时间】:2017-09-04 05:42:37
【问题描述】:
我创建了一个实现 HttpInterceptor 的自定义身份验证拦截器。我将为使用 httpClient 发出的每个请求添加标头。 现在我有几个不需要添加身份验证标头的请求。
下面是我的自定义拦截器的代码供参考
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private franchiserService: FranchiserService,
private currentMerchantService: CurrentMerchantService) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
console.log('Request Intercepted');
const franchiserKey = this.franchiserService.franchiser.apiKey;
const merchantKey = this.currentMerchantService.merchant.apiKey;
const authReq = req.clone({
headers: req.headers.append('franchiserKey', franchiserKey).append('merchantKey', merchantKey),
url: environment.origin + req.url
});
return next.handle(authReq);
}
}
我如何实现自定义拦截器,它可以做到这两点?
【问题讨论】:
-
我不确定如果没有一些 hack 是否可行,因为我猜 http 拦截器的设计不是那样
-
好吧,测试一下这个请求是不是这几个请求之一,如果是假的就加头,真就不要加。
-
@JBNizet 我有 4 到 5 个不需要标头的请求,用 if-else 实现不是粗略的方法吗?
-
粗不粗,你还有什么选择?
-
好的。我将使用 if-else。谢谢。
标签: angular