Blazor WebAssembly 查询字符串

问题描述 投票:0回答:1

在 Blazor Webassemble 中传递查询字符串的首选方法是什么?例如,我可以传递整数 ID,但这很容易更改。或者我不使用查询字符串并使用 protectedSessionStorage?

blazor blazor-webassembly
1个回答
0
投票

以下是您所有问题的答案:

在 Blazor WebAssembly 中,查询字符串可用于在页面或组件之间传递参数,类似于它们在传统 WebForms 中的使用方式。

示例:

<a href="/companydetails?id=123">Company Details</a>

收货页面:

@page "/companydetails"
@inject NavigationManager Navigation

@code {
    private int companyId;

    protected override void OnInitialized()
    {
        var uri = new Uri(Navigation.Uri);
        var queryParams = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery(uri.Query);
        if (queryParams.TryGetValue("id", out var idValue))
        {
            companyId = int.Parse(idValue);
        }
    }
}

这种方法易于使用,但不安全,因为任何人都可以轻松修改查询字符串。如果您正在处理非敏感数据,使用查询字符串就可以了。

您提到在管理端使用整数 ID 访问公司。这对于内部使用来说是可以接受的,但如果在查询字符串中公开,可能会带来安全风险,因为整数 ID 是可预测的。为了增强安全性,对于面向外部的案例,您可以改用

uniqueid
(例如 GUID)。
uniqueid
更难猜测,并且在通过 URL 传递时提供更好的安全性。

使用

uniqueid
的缺点是它的尺寸较大,并且由于索引和存储要求,可能会影响大型数据集的性能。

关于

ProtectedSessionStorage
,它允许您将数据(例如敏感 ID、身份验证令牌)安全地存储在浏览器的会话存储中,其中数据是加密的。对于不应在查询字符串中公开的敏感信息,这是一个不错的选择。

ProtectedSessionStorage
的缺点:

  • 浏览器会话结束时数据会丢失。
  • 无法通过 URL 或书签共享。

总而言之,每种方法都有其自身的优点和缺点。您可以根据您的项目和公司需求选择最合适的方法:

  • 对非敏感数据使用整数 ID 或查询字符串
  • 考虑
    uniqueid
    以获得更安全的情况。
  • 使用
    ProtectedSessionStorage
    安全地处理敏感信息。
© www.soinside.com 2019 - 2024. All rights reserved.