在我们当前的 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/