2017-04-11 42 views
0

我已經看到了什麼看起來是一個很好的方式來處理脫機模式的adal,但它的基礎上附加到displayCall,然後訪問上下文..不幸的上下文isn'暴露在角包裝中。在我直接在ADAL附近編寫一些自定義的代碼之前,我想我會問其他人如何使用ADAL處理基於AppCache的離線應用程序?我的用例是通過農村地區的移動設備訪問互聯網。在線我希望用戶通過ADAL流程(這很好用)。離線我希望他們驗證他們可以通過本地哈希引腳訪問本地數據緩存。ADAL-Angular離線支持(我錯過了什麼嗎?)

想法? 謝謝大家。

+0

你可以擴大本地ca存儲? –

+0

因此,本地緩存將是用戶在離線時進行的活動,使用用戶「pin」對本地存儲進行加密,然後存儲用於離線身份驗證的引腳散列......從ADAL角度來看,我只想知道是否存在是一種「僞裝」的方式,關於用戶登錄和當它的在線時......我已經閱讀了一些使用displayCall的東西..但是,這隻適用於如果你有上下文,你沒有訪問通過adal-angular模塊成角度。 –

+0

仍然有一點問題的理解,但我可以說到displayCall。在重定向和激活身份驗證請求之前調用login()時,使用displayCall將控制權交給應用程序。基本上,你會提供一個回調,ADAL.js會做這件事,並在開始請求之前停下來,並將你的應用程序傳遞給構建的auth URL。然後,您的應用程序可以修改/附加/刪除任何一部分,然後手動完成請求。 [檢出這個github問題](https:// github。com/AzureAD/azure-activedirectory-library-for-js/issues/462)來配置代碼步驟。 –

回答

0

ADAL.js中沒有任何內容旨在支持脫機場景。

ADAL用於在Web API的連接案例中獲取訪問令牌。它沒有任何機制來使用令牌保護本地數據存儲區/緩存。

+0

我知道它不明白本地緩存..我想我的問題是不夠清楚..我想知道是否有一種方法來「覆蓋「它在瀏覽器處於脫機狀態時的行爲,以便我可以手動(通過我自己的進程)將用戶標記爲已登錄...忽略故事的本地緩存一側.. –

0

好的,所以正確的答案是肯定使用config.displayCall ..但是displayCall是在app.config中配置adal-angular,這幾乎使得它不可能真正用在角度..所以這裏有幾個代碼調整你可以添加到阿達爾棱角,這樣你也可以採取控制(如果需要)..

1)在你的軟件中添加以下VAR /功能(我做到了圍繞48行)

var internalDisplayCall = function (url) { 
       if (userDefinedDisplayCall) { 
        userDefinedDisplayCall(url); 
       } else { 
        if (_adal.popUp) { 
         _adal._loginPopup(url); 
        } 
        else { 
         _adal.promptUser(url); 
        } 
       } 
     } 

這與adal中關於是否存在displayCall方法的邏輯幾乎相同。

2)添加一個變種爲userDefinedDisplayCall大約在同一區域

var userDefinedDisplayCall = undefined; 

3)你需要的背景下,因爲沒有行爲「通過落」到displayCall使用在阿達爾默認行爲(或在我副本如何行事),所以將其添加到返回對象中的提供程序中。 (我這樣做是圍繞線390)

context: _adal, 

4)添加一個方法來設置userDefinedDisplayCall方法和添加到您的返回對象以及..我沒有在返回的對象是內聯,如此反覆左右線390

setDisplayCall: function (newDisplayCall) { 
         if (newDisplayCall && typeof newDisplayCall !== 'function') { 
          throw new Error('displayCall is not a function'); 
         } 
         userDefinedDisplayCall = newDisplayCall; 
        } 

現在你可以用你的蔚藍AD租戶,你的appid配置的app.config你adalServiceProvider,而且要求所有的爵士樂,那麼您可以在app.run注入adalService和配置displayCall所以你可以注入你的自己的行爲...