首页 > 解决方案 > 如何知道给定用户是否已使用 MSAL 登录?

问题描述

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

我目前的做法:

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

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

标签: msalmsal.js

解决方案


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

const promise = agent.acquireTokenSilent(...)

如果用户没有登录,promise 将被拒绝并返回错误代码user_login_error 如果,另一方面,用户仍然登录,promise 将被解决


推荐阅读