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