2017-08-25 33 views
0

場景是AngularJS 1.6.5 SPA,用於驗證的c#WebAPI和Azure AD(AAD)。我正在使用Angular-ADAL庫來處理認證和角路由來處理路由。奇怪的是,路由可以是匿名的(即不需要路由定義中的requireADLogin: true),但需要到後端(例如獲取圖像或從API獲取數據),被ADAL攔截並且從不到後端/ API。Angular ADAL需要驗證未驗證的路由

我的路由定義像這樣,當我想保護的路徑:

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

而與上述類似,但沒有requiredADLogin: true時不受保護。

按照documentation:不指定requireADLogin = true屬性

路由被自動添加到anonymousEndpoints陣列。

點擊一個不受保護的鏈接不會將您帶到Azaure認證頁面,但後端/ API請求會被攔截並引發錯誤。

我已經解決了這個問題(手動)添加一個anonymousEndpoints數組,但對於較大的應用程序來說,這是不可行的。

任何想法?

回答

0

這是預期的行爲。參數requireADLoginanonymousEndpoints用於不同的目的。

requireADLogin用於判斷路線是否有針保護。如果這是真的,那麼應用程序將要求用戶在可以訪問路線之前先進行身份驗證。

anonymousEndpoints參數用於幫助adal庫確定$http服務是否需要注入令牌。默認情況下,如果我們未將requireADLogin參數指定爲true(請參閱routeChangeHandler),則路由URL將被添加到anonymousEndpoints中。