asp.net - Blazor WebAssembly PWA session 存储在部署到 Azure 后不会保留

标签 asp.net azure local-storage blazor blazor-client-side

我正在开发 Blazor WebAssembly PWA,本地运行该项目会将用户存储在 session 存储中并将其保留在那里。

但是当我部署到 Azure(Linux 应用程序服务)时, session /本地存储不会持续存在。因此,当导航到不同页面(在我的应用程序内)或刷新页面时,oidc.user 变量将从 session 存储中删除,因此我的用户被注销。

local working session storage

  • 在本地它正在工作并且 key 对将持续存在。

enter image description here

  • 部署到 Azure 时,成功登录后将添加相同的 key ,但在重定向后它将被删除。

所以真正的问题是:为什么我的 session 存储在本地工作,但它会在重定向后删除 oidc.user key 对,导致用户注销。

最佳答案

希望它能有所帮助,因为我也经历过同样的事情:

  1. 我的 blazor 应用和 IDP 不在同一域中;
  2. 第三方 Cookie 已禁用;
  3. IDP 是 Identityserve4/duende;

由于某种原因,登录后,AuthenticationService 库尝试使用 iframe 进行“check_session”,但由于 #1 和 #2 而失败。由于失败,它会从 session 存储中删除“oidc.user:{client_id}”记录以及对后端的后续请求。

解决方案

作者here很好地阐述了问题和可能的解决方案。

解决方法

您可以修补 AuthenticationService.js 文件,创建自己的文件并删除 session 检查,或更改其频率。至少,它会给您的应用程序返回访问 token 生命周期。

这 2 个键是值得修改的好候选键。

{
   key: "monitorSession",
      get: function () {
         return _monitorSession; //maybe return false? 
      },
}
{
   key: "checkSessionInterval",
      get: function () {
         return this._checkSessionInterval;
      },
   },
}

关于asp.net - Blazor WebAssembly PWA session 存储在部署到 Azure 后不会保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65772055/

相关文章:

c# - 重定向到错误页面

asp.net - 是否可以通过 CSS 使 GridView 中的某些边界字段不可见?

azure - 我可以在Azure HDInsight中使用WebHDFS吗?

javascript - 没有数据存储的主干

javascript - 将多个值保存到 LocalStorage 中的相同类型,然后检索值

c# - 堆栈不足,无法继续安全地执行程序。 ASP.NET MVC 4

asp.net - 什么是装配实习?

azure - 如何使用应用程序 ID 及其 key 之一进行身份验证?

azure - 如何使用 Azure 流分析将本地 SQL Server 用作输出?

android - android 中 getExternalCacheDir 与 getExternalFilesDir 之间的区别