【发布时间】:2021-02-05 20:17:22
【问题描述】:
我正在开发一个项目,该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器 rest API。我已经成功关闭了未经身份验证的客户端的 API。现在,每当我从 Angular 客户端发出请求时,我都需要在标头中自动注入一个令牌。 我尝试的是实现这样的 HttpInterceptor :
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
req = req.clone({
setHeaders: {
'Content-Type' : 'application/json; charset=utf-8',
'Accept' : 'application/json',
'Authorization': `${this.authService.userToken}`,
//#endregion
},
})
return next.handle(req);
}
当使用标准的 Angular HttpClient 发出请求时,这对我来说总是很好。但是现在我使用 aws-amplify 包中的 API 向我的 API.Gateway 发出请求,这些请求不能像这样被拦截。 这是我提出请求的方式:
import { API } from 'aws-amplify';
.
.
.
return API.get('apiName', '/users',{})
而且这些都没有使用 Angular HttpClient。
编辑: 同样在 app.module.ts 中:
providers : [{
provide : HTTP_INTERCEPTORS,
useClass: HttpRequestInterceptor, --> My interceptor class
multi : true,
}]
有人知道我如何拦截这些对我的 API 网关的请求以注入令牌吗?
祝你愉快!
【问题讨论】:
-
CathyAugust 发布了一个 Answer 说“https://github.com/claudiajs/example-projects/tree/master/intercepting-requests 您可以查看 ClaudiaJS 以获得解决方案。”
标签: angular amazon-web-services api authentication aws-api-gateway