2017-04-11 39 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所以你可以注入你的自己的行为...