在 Blazor Server 应用程序中实现用户会话变量的最佳做法是什么?

What is the best practice to implement user session variables in Blazor Server applications?

我正在自学编程,我正在使用 c# 和 asp.net 内核试验 Blazor Server 应用程序。

取假设class Workspace:

public List<Item> Items { get; set; }

每个 user 可以关联到 Workspace 的一对多实例;这将授权他们 select 所述 Workspace 实例之一,并对子 Item 实例(即 Workspace.Items)执行创建、读取、更新和删除操作。注意,这些操作可能在不同的页面上执行。

存储对当前 Workspace 的引用的最佳方法是什么?例如我应该将当前 Workspace 作为 属性 存储在 User 帐户中吗?或者也许有更好的方法来记录会话状态?

在 Blazor Server 上,您可以在多个位置存储状态数据,完整记录在 ASP.NET Core Blazor state management。摘要:

  • 服务器端存储 对于跨越多个用户和设备的永久数据持久性,应用程序可以使用服务器端存储。选项包括:Blob 存储、键值存储、关系数据库、Table 存储
  • URL:对于表示导航状态的瞬态数据,将数据建模为URL.
  • 的一部分
  • 浏览器存储:对于用户主动创建的临时数据,常用的存储位置是浏览器的localStorage和sessionStorage集合。
  • 内存状态容器服务:嵌套和非嵌套组件可以使用已注册的内存状态容器共享对数据的访问。自定义状态容器 class 可以使用可分配的操作来通知应用程序不同部分中的组件状态更改。