[英]ADAL-Angular offline support (am I missing something?)
我已經看到了處理adal離線模式的好方法,但是它基於附加到displayCall然后訪問Context的方法。不幸的是,Angular包裝沒有公開上下文。 在直接圍繞ADAL編寫自定義內容之前,我想過要問其他人如何使用ADAL處理基於AppCache的脫機應用程序? 我的用例是通過農村地區的移動設備訪問互聯網時出現斑點。 在線我希望用戶通過ADAL流程(效果很好)。 脫機我希望他們確認他們可以通過本地散列圖釘訪問本地數據緩存。
有什么想法嗎? 謝謝大家
ADAL.js中沒有旨在支持脫機方案的內容。
在連接的情況下,可以使用ADAL獲取Web API的訪問令牌。 它沒有使用令牌保護本地數據存儲/緩存的機制。
好的,所以正確的答案是肯定要使用config.displayCall。但是,在app.config期間使用adal-angular配置了displayCall,這幾乎使它無法真正地用於angular ..因此,您可以添加一些代碼調整到adal-angle,以便您也可以控制(如果需要)。
1)在您的提供程序中添加以下var / function(我是在第48行附近完成的)
var internalDisplayCall = function (url) {
if (userDefinedDisplayCall) {
userDefinedDisplayCall(url);
} else {
if (_adal.popUp) {
_adal._loginPopup(url);
}
else {
_adal.promptUser(url);
}
}
}
關於是否有displayCall方法,這與adal的邏輯幾乎相同。
2)在同一區域為userDefinedDisplayCall添加一個變量
var userDefinedDisplayCall = undefined;
3)您將需要使用上下文,因為displayCall沒有“ fallthrough”行為來使用adal(或我的adal行為副本)中的默認行為,因此請將其添加到返回對象中的提供程序中。 (我是在390行附近完成的)
context: _adal,
4)添加一個方法來設置userDefinedDisplayCall方法並將THAT也添加到您的返回對象中。.我在返回對象中進行了內聯,因此在第390行附近
setDisplayCall: function (newDisplayCall) {
if (newDisplayCall && typeof newDisplayCall !== 'function') {
throw new Error('displayCall is not a function');
}
userDefinedDisplayCall = newDisplayCall;
}
現在,您可以使用azure AD租戶,appId和所有所需的爵士樂在app.config中配置adalServiceProvider,然后可以在app.run中注入adalService並配置displayCall,以便注入自己的行為...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.