如何自定义 Blazor WebAssembly Msal 身份验证以将令牌存储在 localStorage 而不是 sessionStorage 中?

How can I customize Blazor WebAssembly Msal auth to store token in localStorage instead of sessionStorage?

上下文

我正在根据 Secure an ASP.NET Core Blazor WebAssembly standalone app with Azure Active Directory B2C 指南在我的 Blazor WebAssembly 应用程序中启用客户端身份验证(没有服务器端组件,整个应用程序在浏览器中运行)。设置按预期工作,我能够将用户重定向到 AD B2C 用户流,登录并重定向回我的应用程序,用户已正确验证。

问题

默认身份验证行为将从 AD B2C 中检索到的 JWT 令牌保留在 sessionStorage 内,一旦浏览器 window 关闭就会清除。我想自定义此默认功能,而不是将令牌持久保存到 localStorage 以进行更长时间的身份验证会话——我希望在用户关闭浏览器 window 后让他们继续登录以进行后续访问。文档似乎没有提供有关我如何完成此操作的任何信息。

我还查看了 Additional Scenarios 文档,了解如何自定义 RemoteAuthenticatorView,但找不到与这些令牌的存储和检索方式相关的任何信息。

我很感激任何关于这方面的指导!

我通过浏览 MSAL.js 文档弄明白了:有一个 cacheLocation 配置 属性 可以设置为 localStorage ,并且 Microsoft.Authentication.WebAssembly.Msal.Models.MsalProviderOptions 公开了 属性.

为了让它工作,我只是将以下内容添加到 Program.cs:

builder.Services.AddMsalAuthentication(options =>
{
    options.ProviderOptions.Cache.CacheLocation = "localStorage";
    ...
});