在 Blazor Webassemble 中传递查询字符串的首选方法是什么?例如,我可以传递整数 ID,但这很容易更改。或者我不使用查询字符串并使用 protectedSessionStorage?
以下是您所有问题的答案:
在 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
的缺点:
总而言之,每种方法都有其自身的优点和缺点。您可以根据您的项目和公司需求选择最合适的方法:
uniqueid
以获得更安全的情况。ProtectedSessionStorage
安全地处理敏感信息。