如何知道给定用户是否已使用 MSAL 登录?

问题描述 投票:0回答:2

使用 msal.js 库(Microsoft 身份验证库),这是了解给定用户是否已登录的方法?我的目的是,如果用户的凭据已保存在浏览器的存储中,则避免显示登录弹出窗口

我目前的做法:

function isUserLoggedIn(username) {
 const agent = msal.UserAgentApplication(...);
 const user = agent.getUser();
 return user != null && user.displayableId === username);
}

但我不确定是否必须检查用户凭据是否已过时/过期。哪条路才是正确的走法?

azure-ad-msal msal.js
2个回答
17
投票

使用 MSAL 代理实例,您可以获取用户信息,因为它已缓存。获取信息(例如 userId)并不意味着用户的凭据仍然有效(已登录)。 要 100% 确定用户已登录,请请求令牌

const promise = agent.acquireTokenSilent(...)

如果用户未登录,则承诺将被拒绝,并显示错误代码user_login_error 另一方面,如果用户仍然登录,则承诺将得到解决


14
投票

来自 MSAL 样本,他们以这种方式检查:

let isLoggedIn = this.authService.instance.getAllAccounts().length > 0;
© www.soinside.com 2019 - 2024. All rights reserved.