将Adal.js与$ stateProvider一起使用

时间:2015-10-12 12:18:48

标签: angularjs angular-ui-router adal angularjs-ng-route adal.js

我们有一个AngularJS SPA,我们一直在使用Adal.js进行身份验证。到目前为止我们使用$ routeProvider(ngRoute模块)处理路由,但由于最近的一些要求,我们需要远离路由提供者方法并采用$ stateProvider(在ui-router中)。但是,认证机制需要保持相似。 adal.js可以和$ stateProvider一样使用$ stateProvider吗? 我们在路由中使用requiredADLogin参数来指定哪些路由需要Azure AD身份验证。代码如下所示:

app.config(['$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider', function ($routeProvider, $httpProvider, adalProvider) {

$routeProvider
    .when('/', {
        controller: 'homeCtrl',
        templateUrl: '/Templates/home.html',
        requireADLogin: true
    })
    .otherwise({
        //template: "Invalid"
        redirectTo: '/'
    });

在更改为$ stateProvider时,以下代码有效:

app.config(function($stateProvider, $urlRouterProvider) {
           $stateProvider
        .state("dashboard", { url: "/dashboard", templateUrl: "Templates/dashboard.html" })
            .state("health", { 
                parent: "dashboard", 
                url: "/agent_tier1", 
                templateUrl: "Templates/health.html",
                requireADLogin: true 
        })
});

或者我们是否可以将requireADLogin属性置于父状态。

2 个答案:

答案 0 :(得分:3)

adal.js将与ui-router一起使用,requireADLogin应该处于您要保护的每个州,而不仅仅是在父状态。

答案 1 :(得分:1)

如果您使用的是组件路由器,则ADAL将无法工作:

https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/283

警告任何试图将低级预角度2.0应用程序升级为打字稿的人,ADAL将是一个挑战。