方案是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
。
未指定requireADLogin = true属性的路由会自动添加到anonymousEndpoints数组中。
单击未受保护的链接不会将您带到Azaure Authentication页面,但后端/ API请求会被截获并引发错误。
我已经解决了这个问题(手动)添加anonymousEndpoints
数组,但对于大型应用程序,这是不可行的。
有什么想法吗?
答案 0 :(得分:0)
这是预期的行为。 requireADLogin
和anonymousEndpoints
参数用于不同目的。
requireADLogin
用于指示路线是否有针头保护。如果是,则应用程序将要求用户在可以访问路径之前先进行身份验证。
使用anonymousEndpoints
参数帮助adal库确定注入令牌所需的$http
服务。默认情况下,如果我们未将anonymousEndpoints
参数指定为true,则会将路径网址添加到requireADLogin
中(请参阅routeChangeHandler)。