Blazor 如何管理用户 Session?

How Blazor manage user Session?

Blazor 新手我不确定了解用户会话是如何工作的。

我正在尝试使用 Blazor 服务器托管 (.NET Core 3.1) 创建一个网站。 我有这样的服务来存储客户:

 public class AppData
    {   
        public Customer CurrentCustomer { get; set; }

        public AppData()
        {         
            this.CurrentCustomer = new Customer() { IsWebConnected = false };
        }
    }

在 Startup.cs 我添加:

 public void ConfigureServices(IServiceCollection services)
{
            services.AddRazorPages();
            services.AddServerSideBlazor();

            AppData data = new AppData();
            services.AddSingleton<Service.AppData>(data);
}

这是什么意思? 设置 CurrentCustomer 后(例如登录页面),我可以在浏览器上启动时使用不同页面上的相关数据访问它。 但是当我在我的电脑上启动另一个浏览器时,我看到了相同的用户集(具有相同的值)。好像是共享的

我一直在处理旧的 ASP.NET Webform,我正在尝试做与 Session(用户一个会话)相同的事情,但它与 Blazor 的方式相同吗?

感谢您的帮助。

AppData data = new AppData();
services.AddSingleton<Service.AppData>(data);

这将添加一个 Singleton 实例。是的,这是所有用户共享的。不涉及 Cookie。这类似于 WebForms 中的 Application[] 对象。

Session[]没有直接的对应,但是有很多解法。文档 list them here.

请注意,您应该尽可能 'stateless',因此请考虑在每次页面初始化时从 Db 中获取数据。