c# - 在 Blazor Server 应用程序中实现用户会话变量的最佳做法是什么?
问题描述
我正在自学编程,我正在尝试使用 c# 和 asp.net 核心的 Blazor Server 应用程序。
参加假设课程Workspace
:
public List<Item> Items { get; set; }
每个都user
可能与 ; 的一对多实例相关联Workspace
。这将授权他们选择所述实例之一并对子实例(即)Workspace
执行创建、读取、更新和删除操作。请注意,这些操作可能在不同的页面上执行。Item
Workspace.Items
存储对 current 的引用的最佳方法是什么Workspace
?例如,我应该将当前Workspace
作为属性存储在User
帐户中吗?或者也许有更好的方法来记录会话状态?
解决方案
在 Blazor Server 上,您可以在多个位置存储状态数据,在ASP.NET Core Blazor 状态管理中有完整记录。概括:
- 服务器端存储对于跨越多个用户和设备的永久数据持久性,应用程序可以使用服务器端存储。选项包括:Blob 存储、键值存储、关系数据库、表存储
- URL:对于表示导航状态的瞬态数据,将数据建模为 URL 的一部分。
- 浏览器存储:对于用户主动创建的瞬态数据,一个常用的存储位置是浏览器的 localStorage 和 sessionStorage 集合。
- 内存状态容器服务:嵌套和非嵌套组件可以使用已注册的内存状态容器共享对数据的访问。自定义状态容器类可以使用可分配的操作来通知应用程序不同部分的组件状态更改。
推荐阅读
- python - 循环中的python从另一个中减去文件
- javascript - 为什么firefox会阻止react-leaflet加载瓷砖?
- php - laravel如何通过json响应显示外键属性?
- amazon-cloudformation - 如何使用 CloudFormation 为 Amazon OpenSearch 设置兼容模式?
- email - 历史延迟队列
- sql-server - 创建具有相同列和类型的内存表的最佳方式作为永久表
- material-ui - 如何使材质ui滑块拇指不在导轨之外
- python - logits 和 label 的大小必须相同
- python - 如何通过 python 在 postgresql 中插入布尔值?
- java - 如何在 Appium Java 客户端中编写 Espresso 视图/数据匹配器?