【问题标题】:How to maintain different sessions in different browser tabs in Blazor server application如何在 Blazor 服务器应用程序的不同浏览器选项卡中维护不同的会话
【发布时间】:2021-06-23 23:34:03
【问题描述】:

我们正在为我们的 Web 应用程序使用 Blazor 服务器应用程序。我们需要在不同的标签页或不同的浏览器窗口中维护不同的会话值。

我们已经尝试过使用本地存储。

为不同的用户实例维护不同的用户值的正确方法是什么。这意味着我们需要将同一用户选择的不同值存储在不同的浏览器选项卡或浏览器窗口中?

问候, 罗汉

【问题讨论】:

  • 您想在浏览器窗口重新加载时保持状态 - 例如 F5?如果没有,请查看带有 OwningComponentBase 的 Blazor 范围服务。

标签: session blazor blazor-server-side


【解决方案1】:

在 .net core 5+ 中,您可以使用 ProtectedStorage,请注意,受保护的浏览器存储依赖于 ASP.NET Core 数据保护,并且仅支持 Blazor 服务器应用。

@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage
@inject ProtectedSessionStorage ProtectedSessionStore

然后设置器:

    private async Task IncrementCount()
{
    currentCount++;
    await ProtectedSessionStore.SetAsync("count", currentCount);
}

和吸气剂:

    protected override async Task OnInitializedAsync()
{
    var result = await ProtectedSessionStore.GetAsync<int>("count");
    currentCount = result.Success ? result.Value : 0;
}

受保护的本地存储仅限于浏览器的窗口。如果用户重新加载页面或关闭并重新打开浏览器,该状态将持续存在。如果用户打开多个浏览器选项卡,则状态在选项卡之间共享。数据保留在受保护的本地存储中,直到明确清除。 受保护的会话存储 的范围仅限于浏览器选项卡。如果用户重新加载选项卡,该状态将持续存在。如果用户关闭选项卡或浏览器,状态将丢失。如果用户打开多个浏览器选项卡,每个选项卡都有自己独立的数据版本。 通常,受保护的会话存储使用起来更安全。 受保护的会话存储避免了用户打开多个标签的风险。

【讨论】:

    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2011-02-19
    • 2013-06-24
    • 1970-01-01
    • 2013-12-28
    • 2018-04-08
    相关资源
    最近更新 更多