我目前正在尝试将Azure目录身份验证库(ADAL.JS)挂钩到UI-Router中。我已经连线,并且它重定向正确,但它总是在重定向之前丢掉404。重定向工作,然后发送回我的应用程序,显示404。
我像这样修改了状态:
{
state: 'admin',
config: {
url: '/admin',
templateUrl: 'app/admin/admin.html',
controller: 'AdminController',
controllerAs: 'vm',
title: 'Admin',
settings: {
nav: 2,
content: '<i class="fa fa-lock"></i> Admin'
},
requireADLogin: true
}
我已经使用了普通的Angular RouteProvider,并且没有抛出404。
我试图将其投入的应用程序是由John Papas Yo Hot Towel发电机生成的。
答案 0 :(得分:3)
这看起来像是adal.js中的一个错误。 ui-router正在使用状态更改。与路由更改处理程序相比,我在设置状态更改的起始页面时看到了一个区别。它应该是:
_adal._saveItem(_adal.CONSTANTS.STORAGE.START_PAGE, $location.$$path);
而不是
_adal._saveItem(_adal.CONSTANTS.STORAGE.START_PAGE, nextRoute.url);
答案 1 :(得分:0)
我可以确认此问题已在当前版本1.0.4
中得到解决,感谢Omer Cansizoglu,我相信他是该图书馆的作者。我在我的应用程序中使用Angular UI路由器成功使用Active Directory身份验证库(ADALJS)。当未经身份验证的用户尝试访问requireADLogin
标志设置为true的状态时,应用程序会正确地重定向到Azure Active Directory登录页面。我不会在任何时候得到404。
请注意,在编写此库的CDN时,仅指向版本1.0.0
。但是,bower.json
文件已更新,bower-install adal-angular
将安装版本1.0.4
。
答案 2 :(得分:0)
我尝试使用adal v1.0.12 + ui-router v0.2.18,但没有运气。似乎该问题与$ locationProvider hashprefix有关。如上所述:
3-配置HTML5模式时,请确保已设置$ locationProvider hashPrefix
// using '!' as the hashPrefix but can be a character of your choosing
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true).hashPrefix('!');
}]);
Active Directory Authentication Library (ADAL) for JavaScript
......它就像一个魅力!