【问题标题】:Angular ADAL requires authentication for non authenticated routesAngular ADAL 需要对未经过身份验证的路由进行身份验证
【发布时间】:2017-08-28 10:40:42
【问题描述】:

场景是 AngularJS 1.6.5 SPA、c# WebAPI 和 Azure AD (AAD) 进行身份验证。我正在使用 Angular-ADAL 库来处理身份验证和 angular-route 来处理路由。奇怪的是,可以匿名的路由(即不需要路由定义中的requireADLogin: true)但需要转到后端(例如获取图像或从 API 获取数据),被 ADAL 拦截并且永远不会到达后端/API。

当我想要一条受保护的路线时,我的路线是这样定义的:

.when('/clasesDeDocumento', {
    templateUrl: 'app/views/mantenedores/clasesDeDocumento/clasesDeDocumento.html',
    controller: 'clasesDeDocumentoController',
    controllerAs: 'vm',
    requireADLogin: true,
    title: "clases de documentos"
})

与上面类似,但在不受保护时没有requiredADLogin: true

根据documentation

未指定 requireADLogin=true 属性的路由会自动添加到 anonymousEndpoints 数组中。

单击未受保护的链接不会将您带到 Azaure 身份验证页面,但是后端/API 请求会被拦截并引发错误。

我已经解决了这个问题(手动)添加一个anonymousEndpoints 数组,但对于更大的应用程序,这是不可行的。

有什么想法吗?

【问题讨论】:

    标签: angularjs adal.js


    【解决方案1】:

    这是预期的行为。 requireADLoginanonymousEndpoints 参数用于不同的目的。

    requireADLogin 用于路由是否被针保护。如果为真,应用将要求用户先进行身份验证,然后才能访问路由。

    anonymousEndpoints参数用于帮助adal库判断$http服务是否需要注入token。并且默认情况下,如果我们不将requireADLogin参数指定为true,路由URL将被添加到anonymousEndpoints中(参考routeChangeHandler)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2017-09-18
      相关资源
      最近更新 更多