【发布时间】:2020-05-07 06:16:30
【问题描述】:
我正在使用 AWS Cognito 和 Angular 8 为我的应用程序构建登录页面。一切正常,直到我尝试创建 getToken() 函数,事实证明 getSession() 方法接受 callback 而不是返回 string。
这意味着我必须像这样将它包装在 Promise 中:
export function getToken() {
var currentUser = userPool.getCurrentUser();
if (!currentUser) {
// redirect to login page
} else {
return new Promise((resolve, reject) => {
currentUser.getSession((err, session) => {
if (err) {
reject(err);
} else if (!session.isValid()) {
resolve(null);
} else {
resolve(session.getIdToken().getJwtToken());
}
});
});
}
}
这里是我的拦截器:
@Injectable()
export class AuthenInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler) : Observable<HttpEvent<any>> {
// Add token to the header.......
return next.handle(req);
}
}
据我所知,在这里返回 Promise 不是一种选择。那么如何将令牌添加到标题中?还是应该直接从 localStorage 中获取?
【问题讨论】:
标签: angular promise amazon-cognito angular-http-interceptors