使用 msal.js 库(Microsoft 身份验证库),这是了解给定用户是否已登录的方法?我的目的是,如果用户的凭据已保存在浏览器的存储中,则避免显示登录弹出窗口
我目前的做法:
function isUserLoggedIn(username) {
const agent = msal.UserAgentApplication(...);
const user = agent.getUser();
return user != null && user.displayableId === username);
}
但我不确定是否必须检查用户凭据是否已过时/过期。哪条路才是正确的走法?
使用 MSAL 代理实例,您可以获取用户信息,因为它已缓存。获取信息(例如 userId)并不意味着用户的凭据仍然有效(已登录)。 要 100% 确定用户已登录,请请求令牌
const promise = agent.acquireTokenSilent(...)
如果用户未登录,则承诺将被拒绝,并显示错误代码user_login_error 另一方面,如果用户仍然登录,则承诺将得到解决
来自 MSAL 样本,他们以这种方式检查:
let isLoggedIn = this.authService.instance.getAllAccounts().length > 0;