blazor - Blazor 如何管理用户 session ?

标签 blazor blazor-server-side asp.net-blazor

刚接触 Blazor,我不确定用户 session 是如何工作的。

我正在尝试使用 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 相同的事情(用户一个 session ),但是 Blazor 的方式是否相同?

感谢您的帮助。

最佳答案

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

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

Session[] 没有直接的对应项,但有很多解决方案。文档 list them here .

请注意,您应该尝试尽可能“无状态”,因此请考虑在每次页面初始化时从数据库中获取数据。

关于blazor - Blazor 如何管理用户 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62147623/

相关文章:

Blazor wasm - 调试 - 无法查看任何变量的值

c# - Blazor WebAssembly 401 未经授权,即使我已获得授权

Blazor 客户端调试失败

c# - 如何将参数传递给服务器端 Blazor 中的 razor 组件?

blazor-server-side - Blazor 组件库中的 CSS 不加载

blazor - 带有 Blazor (WASM) 的 MediatR 通知 - 事件处理程序不更新 UI

c# - 如何创建必须从 Blazor 中具有泛型类型的类继承的泛型类型?

javascript - 当 20 分钟后应用 session 超时时,我在启动时收到 session 上的错误对象空引用

asp.net-core - Blazor 服务器页面单元测试 - 如何模拟 Blazor 服务器页面中使用的辅助 signalR 客户端连接

dependency-injection - 将组件的依赖注入(inject)方法移动到 Blazor 服务器端中的单独 CS 库