gpt4 book ai didi

javascript - adalProvider.init(..) 破坏路由

转载 作者:行者123 更新时间:2023-11-30 11:56:16 33 4
gpt4 key购买 nike

所以按照this tutorial and working example ,我之前在我的 app.js 文件中调用过这个函数(其中路由工作得很好):

app
.config([
'$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider',
function($routeProvider, $httpProvider, adalProvider) {
$routeProvider
.when('/home',
{
templateUrl: '/app/views/home.html',
caseInsensitiveMatch: true
})
.when('/passwordReset',
{
templateUrl: '/app/views/passwordReset.html',
controller: 'ResetRequestController as vm',
requireAdLogin: true,
caseInsensitiveMatch: true
})
.when('/userSearch',
{
templateUrl: '/app/views/userSearch.html',
controller: 'UserSearchController as vm',
requireAdLogin: true,
caseInsensitiveMatch: true
})
.otherwise({ redirectTo: '/home' });

}
]
);

...但是按照教程的要求添加以下代码并添加此行(直接在 .otherwise({ redirectTo: '/home' }); 之后:

adalProvider.init(
{
instance: 'https://login.microsoftonline.com/',
tenant: '...', //Removed
clientId: '...', //Removed
extraQueryParameter: 'nux=1',
//cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
},
$httpProvider
);

...我收到以下错误:

angular.js:13424 Error: [$compile:tpload] Failed to load template: app/views/_header.html (HTTP status: undefined undefined) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=app%2Fviews%2F_header.html&p1=undefined&p2=undefined at angular.js:68 ...[truncated by user for readability]

angular.js:13424 TypeError: Cannot read property 'push' of undefined at routeChangeHandler (adal-angular.js:213) ...[truncated by user for readability]

angular.js:13424 Error: [$compile:tpload] Failed to load template: /app/views/home.html (HTTP status: undefined undefined) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=%2Fapp%2Fviews%2Fhome.html&p1=undefined&p2=undefined at angular.js:68 ...[truncated by user for readability]

多个 StackOverflow 问题已经解决了错误消息 #1 和 #3,但它们建议确认路由是否正确。我不仅确认了这些文件存在(通过直接将浏览器指向它们),而且如前所述,根本没有 adalProvider.init(..)路线恢复正常。

我正在运行 npm 包版本 1.0.10 中包含的最新版本的 adal.js 和 adal-angular.js。

我在这里缺少什么?在仍然实现adalProvider.init(..)的同时,我可以纠正什么以使路由恢复到工作顺序?

最佳答案

Angular/Adal.js 也有类似的问题。我使用 ui-router 而不是 ng-route,尝试切换到 ng-route 看看这是否可以解决问题(认为它与解析模板 URI 有关),但问题仍然存在。我认为我的解决方案也适合您,因为它似乎与路由无关,而是与 adal 配置相关。

使用匿名端点更新了我的配置,未通过身份验证屏蔽的部分:

    var anonymousEndpoints = [
'partials/public/'
];

var endpoints = {
// Map the location of a request to an API to a the identifier of the associated resource
'https://contosotogo.azurewebsites.net/': 'https://contoso.onmicrosoft.com/ToGoAPI'
};

adalAuthenticationServiceProvider.init(
{
tenant: '__removed__',
clientId: '__removed__',
anonymousEndpoints: anonymousEndpoints, // Added this
endpoints: endpoints
},
$httpProvider
);

我认为模板通过未知的 key /状态存储在 Angulars 模板缓存中,并且在未经身份验证的情况下无法检索。由于它们不需要身份验证,所以我已将它们取出。这似乎也解决了更新过期 token 时的无限循环问题( https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/216 )。

老实说,我在实现 adal.js 时遇到了很多问题。让东西工作起来是一项努力,搜索 stackoverflow/github 和奇怪的教程/示例......

希望对你有帮助,加油

关于javascript - adalProvider.init(..) 破坏路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37862349/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com