Angular ADAL要求对未经过身份验证的路由进行身份验证

时间:2017-08-25 10:39:49

标签: angularjs adal.js

方案是AngularJS 1.6.5 SPA,c#WebAPI和Azure AD(AAD)用于身份验证。我正在使用Angular-ADAL库来处理身份验证和角度路由来处理路由。奇怪的是,路由可以是匿名的(即路由定义中不需要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 Authentication页面,但后端/ API请求会被截获并引发错误。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

requireADLogin用于指示路线是否有针头保护。如果是,则应用程序将要求用户在可以访问路径之前先进行身份验证。

使用anonymousEndpoints参数帮助adal库确定注入令牌所需的$http服务。默认情况下,如果我们未将anonymousEndpoints参数指定为true,则会将路径网址添加到requireADLogin中(请参阅routeChangeHandler)。