自AdalService.init(config);返回void,因此您无法使用.then()跟随它,在进行其他调用之前,您如何等待身份验证完成?
答案 0 :(得分:1)
我们不需要等待身份验证。调用受Azure AD保护的Web API的正常进度如下所示:
我还更新了一个代码示例,从here的angular2 app调用Microsoft Graph。
答案 1 :(得分:1)
我建议在Angular 2中使用ng2-adal(https://www.npmjs.com/package/ng2-adal)和authguard功能。如果你不想拉入ng2-adal,你可以在adal库周围编写自己的包装器。基本上在Authguard的激活中你可以给出类似的东西: -
if (this.adalService.userInfo.isAuthenticated) {
return true;
} else {
this.adalService.login();
return false;
}
对你的整个项目有一个共同的http gatweay会很好,你在那里查看相同的代码,看看adal在进行任何调用之前是否经过身份验证.ng2-adal已经处理好了这些事情。如果您想自己使用observable实现它,请参阅源代码 https://github.com/sureshchahal/angular2-adal/blob/master/src/services/adal.service.ts https://github.com/sureshchahal/angular2-adal/blob/master/src/services/authHttp.service.ts