【问题标题】:Microsoft Authentication Library SPA versus a Web AppMicrosoft 身份验证库 SPA 与 Web 应用程序
【发布时间】:2021-09-18 21:06:17
【问题描述】:

TLDR:这是检查多个网页、SPA 或 Web 应用程序的登录状态的正确方法。

我正在为与我合作的公司开发一个内部员工网站。我们目前配置和开发了一个 SPA,并且工作正常,但随着我们添加更多功能,我认为我们将需要不止一个页面。

如果我错了,请纠正我,但这是我目前对带有 SPA 的 MSAL.js 的理解。假设最终用户正在尝试访问位于 [company].com/home 的员工页面,如果该用户尚未使用存储在我们 Azure AD 中的帐户进行身份验证,则最终用户只能对该页面进行身份验证,并且他们的会话状态可以存储在本地存储中,因此当他们访问 [company].com/home 时,可以静默获取他们的登录信息,最终用户无需再次登录。如果他们没有帐户,他们将无法访问任何页面。

此外,按照这种逻辑,如果最终用户访问 [company].com/staffresources,除了缓存的 [company].com/home 登录名之外,他们还必须登录此页面,整个网站的每个页面都将遵循相同的规则。至少,这是我的理解,对吗?

我确实看到 Web 应用程序有一个选项,这是否可以解决最终用户必须对他们尝试连接的每个单独页面进行身份验证的问题?或者有没有办法使用 SPA 检查登录状态,如果用户尚未通过身份验证,他们可以被重定向到 [company].com/login。

任何指向适当文档的解决方案的直接链接也将不胜感激。

【问题讨论】:

    标签: azure-active-directory single-page-application msal msal.js


    【解决方案1】:

    localstorage 是按域分割的,而不是按每个单独的页面。如果用户在 [company].com/login 上使用 msal.js 登录,他们将在 [company].com 域下的每个页面上登录。

    【讨论】:

    • 那么我将如何获取登录状态,MSAL 是否提供了检查用户是否登录的功能?如果没有,它只是从本地存储中获取密钥?
    • msal-browser v2 提供了一个 getAllAccounts API,它返回已在此域上的此浏览器上登录的所有帐户的数组。
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2018-08-11
    • 2012-09-09
    • 2018-03-01
    • 2018-03-05
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多