2017-03-17 10 views
1

私は角(1.x)SPAを持っており、Azureを介してauthを要求するためにADAL経由で保護しようとしています。 しかし、requireADLogin: trueとマークされたルート/ページ/状態であっても、ユーザーは認証を要求することなくアクセスできます。ADALが必要ですか?ログインと角度ui-router?

ngRouteの代わりにangular-ui-router(0.4.2)を使用しているため、ルート/状態の設定が実際には考慮されていないのだろうかと思います。

私のHTMLテンプレートは、私は(下記参照)のシェルおよび/または子状態にrequireADLogin: trueを設定した場合でも、userInfoを表示して{"isAuthenticated":false,"userName":"","loginError":""}だ最初のロードではなく、(子ルート/状態を含む)、ページがロードされます。

私はログインシーケンスをポップアップで表示しており、それが完了すると、ログインしたユーザーのuserInfoが のページに表示されますので、残りの部分が並んでいると思います。 V

// My top-level app config block: 
function AppConfig($stateProvider, $urlRouterProvider, $httpProvider, adalAuthenticationServiceProvider) { 

    // Configure the urlRouteProvider to redirect to /intro by default 
    $urlRouterProvider.otherwise("/intro"); 

    // Configure the ADAL Auth Provider 
    adalAuthenticationServiceProvider.init({ 
     tenant: "[MyTenantID]", 
     clientId: "[MyClientID]", 
     popUp: true 
    } 
    // // pass http provider to inject request interceptor to attach tokens 
    // $httpProvider 
    ); 
} 

// Later I set up my shell state/route (all other states are children of this one): 
$stateProvider.state('shell', { 
    //blank url as the shell is an abstract parent to every other state 
    url: '', 
    templateUrl: 'app/shell/shell.html', 
    controller: 'ShellController', 
    controllerAs: 'vm', 
    abstract: true, 
    requireADLogin: false // <-- tried with requireADLogin: true 
}); 

// Intro (aka shell.intro) should be the default state: 
$stateProvider.state('shell.intro', { 
    url: '/intro', 
    templateUrl: 'app/intro/intro.html', 
    controller: 'IntroController', 
    controllerAs: 'vm', 
    data: { 
     pageTitle: 'Intro' 
    }, 
    requireADLogin: true 
}); 

答えて

1

私はあなたのコードスニペットで簡単なテストがあり、主な犯罪者が刑$httpProvideradalAuthenticationServiceProvider.init下の機能をコメントの操作になる可能性を見つけます。

この文のコメントを解除し、理由もhttps://github.com/AzureAD/azure-activedirectory-library-for-js#getting-startedでのサンプルコードで提供されてください:

$httpProvider // pass http provider to inject request interceptor to attach tokens

それは私の側で、あなたの問題を解決します、それを試してみてください。

+0

Out sick - できるだけ早く更新を試みます。あなたの時間をありがとう! – FOR

+0

$ httpProvider行のコメントを外してみると、このトリックが完了したようです。ありがとうございます! – FOR

関連する問題