簡體   English   中英

ADAL-Angular離線支持(我缺少什么嗎?)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM