Adal AcquireTokenAsync如何提前知道用户是否在缓存中

时间:2017-11-10 05:03:21

标签: azure-active-directory adal

我正在使用Xamarin应用程序中的Adal,我想知道如何在调用AuthenticationContext ac = new AuthenticationContext("https://login.microsoftonline.com/x.onmicrosoft.com"); return ac.TokenCache.Count; 之前确定用户是否已经在缓存中。

我需要这个,因为当设备没有互联网,并且缓存中没有用户时,我将被重定向到Azure登录页面,由于缺乏互联网访问,该页面将失败。

在这种情况下,当用户在失去Internet访问权限之前登录时,登录将不会重定向到Azure登录页面。

当互联网不可用时,我想避开丑陋的页面。

我已经尝试了

AcquireTokenAsync

但是在我呼叫cache: false, type: 'POST' 之前它被设置为0,并且在呼叫之后即使它没有要求用户,计数现在是1

感谢任何建议

1 个答案:

答案 0 :(得分:2)

我找到了这个例子:https://blog.xamarin.com/put-adal-xamarin-forms/

authContext.TokenCache.ReadItems().Count()

根据source code判断,它会调用正常的回调来加载数据,然后将所有项目都还给你。

您还可以尝试AcquireTokenSilent,如果无法从缓存中获取令牌,则会抛出AdalSilentTokenAcquisitionException