javascript - Adal.js 在没有重定向的情况下注销

标签 javascript angularjs azure-active-directory adal adal.js

在我们当前的 SPA 实现中,我们使用 adal.js 对 AzureAD 进行身份验证,并在身份验证成功后点击我们的 Web API 以获取授权数据。在一些极端情况下,获取授权数据调用可能会失败。在这种情况下,我们想清除由 adal.js 创建的状态/缓存。我已经尝试了一些东西,但我无法创建一个干净的石板。这是我试过的一些代码。

localStorage.clear();
 var authContext = AuthenticationContext.prototype._singletonInstance;
 authContext.clearCache();
 authContext._user = null; 

我不想使用内置的注销功能。调用注销会将用户重定向到 Azure 注销页面。 UX 非常奇怪,所以尽量避免它。

最佳答案

如果你想清除adal创建的所有缓存条目,clearCache()是应该使用的方法,如果你只想清除特定资源条目的缓存,那么使用clearCacheForResource。

但还有一点要注意,这两种方法只是清除缓存/存储,不会清除 azure ad 上的任何 session /cookie 保留,如果你想清除它,那么内置注销应该是要使用的那个。

您可以尝试实现静默注销(可能使用 iframe,这将阻止 ux 显示),然后调用 clearCache 清除 localstorage/sessionstorage

关于javascript - Adal.js 在没有重定向的情况下注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708493/

相关文章:

javascript - 为什么 setState 在 React 功能组件中不起作用

javascript - 如何将 json 字典从 javascript.get 传递到 django 模板?

java - 将 Azure AD 集成到 Java Web 应用程序中。如何破解 Azure AD

javascript - d3 用一个函数设置多个属性

javascript - Angularjs ui-select 标记不起作用

angularjs - ng-table 和 ng-grid 哪个更好?

javascript - 模块 'ui.bootstrap' 不可用-Angularjs

azure - PowerShell Azure Functions Multi-Tenancy 查询

c# - Azure AD GraphServiceClient 无法针对用户设置 AdditionalData

javascript - Javascript 中的无符号 64 位按位与/或