2017-08-25 14 views
0

シナリオはAngularJS 1.6.5 SPA、c#WebAPIおよびAzure AD(AAD)です。 Angular-ADALライブラリを使用して、認証ルートと角度ルートを処理してルートを処理しています。奇妙なことに、匿名のルート(経路定義にrequireADLogin: trueは必要ありません)が、バックエンドに行く必要がある(例えば、画像を取得したり、APIからデータを取得するなど)、ADALによって傍受され、バックエンド/ APIにアクセスします。角度ADALは認証されていないルートの認証が必要です

.when('/clasesDeDocumento', { 
    templateUrl: 'app/views/mantenedores/clasesDeDocumento/clasesDeDocumento.html', 
    controller: 'clasesDeDocumentoController', 
    controllerAs: 'vm', 
    requireADLogin: true, 
    title: "clases de documentos" 
}) 

そして、上記と同様の、しかしrequiredADLogin: trueなしで保護されていないとき:

私のルートは、私は、ルートが保護したいとき、そのように定義されています。 documentationによると

:requireADLogin =真のプロパティを指定しない

ルートは自動的にanonymousEndpoints配列に追加されます。

保護されていないリンクをクリックしても、Azaure認証ページには移動しませんが、バックエンド/ API要求はインターセプトされ、エラーがスローされます。

私はこれを(手動で)anonymousEndpointsアレイを追加して解決しましたが、大きなアプリケーションではこれは実現できません。

アイデア?

答えて

0

これは予期した動作です。 requireADLoginanonymousEndpointsのパラメータは異なる目的で使用されます。

requireADLoginは、経路が針を保護するかどうかに使用されます。それが本当であれば、ユーザーはルートにアクセスする前にまず認証を受ける必要があります。

anonymousEndpointsパラメータは、adalライブラリが$httpサービスがトークンを注入する必要があるかどうかを判断するのに役立ちます。 requireADLoginパラメータをtrueに指定しないと、デフォルトではルートURLがanonymousEndpointsに追加されます(routeChangeHandlerを参照)。

関連する問題