Angular 2 ADAL等待service.init

时间:2017-07-13 16:49:12

标签: angular adal

自AdalService.init(config);返回void,因此您无法使用.then()跟随它,在进行其他调用之前,您如何等待身份验证完成?

2 个答案:

答案 0 :(得分:1)

我们不需要等待身份验证。调用受Azure AD保护的Web API的正常进度如下所示:

  1. 用户导航到应用
  2. OP单击按钮以使用Azure AD登录
  3. 用户导航到受Azure AD保护的页面
  4. 我们可以获取保护资源的访问令牌并将其显示给用户的页面。
  5. 我还更新了一个代码示例,从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