New*_*ewm 7 blazor blazor-server-side
我正在使用 Blazor WebAssembly 进行概念验证项目。该项目已经有一个 React 前端,我希望在 Blazor 中复制它。
我的解决方案中有以下项目:
我想在 Blazor WebAssembly 项目中引用应用程序层,以便我可以重用针对 DTO 存在的验证规则。是否有人可以遍历浏览器中的代码并从命令/查询中提取敏感信息,例如连接字符串?
例如,一个简单的查询可能看起来像这样,单步执行代码将允许IDbConnection检查:
public class PayCategoryListQueryHandler
: IRequestHandler<PayCategoryListQuery, PayCategoryListQueryVm>
{
private readonly IDbConnection _connection;
public PayCategoryListQueryHandler(IDbConnection connection)
{
_connection = connection;
}
public async Task<PayCategoryListQueryVm> Handle(PayCategoryListQuery query, CancellationToken cancellationToken)
{
{
var viewModel = new PayCategoryListQueryVm();
viewModel.AddRange(
await _connection.QueryAsync<PayCategoryListItemDto>(
"SELECT Id, Description, MakeAttendedTimeZero, IsOffSite, IsVisibleToClient FROM PayCategory ORDER BY Description"));
return viewModel;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是否需要将 DTO 及其验证提取到一个单独的层,该层不包含任何数据库访问代码以防止连接字符串被泄露?
澄清
为了尝试澄清这个问题,我想尝试更好地解释我的情况。
我当前的应用程序使用 React 前端,Formik 和 Yup 提供验证。这意味着每次对验证规则进行更改时,我都需要在两个地方反映它——应用程序层和 React 应用程序。我希望迁移到 Blazor 可以通过只需要在应用程序层维护验证规则来减少重复。
我目前使用的架构基于NorthwindTraders示例应用程序。
使用该示例,CreateCustomerCommand使用CreateCustomerCommandValidator,它将通过CustomersController响应 POST 请求。为了在 Blazor WebAssembly 中使用它进行客户端验证,我目前需要引用应用程序层。
鉴于这种情况,所有命令(不是命令处理程序)和验证器都应该移动到一个单独的项目中,然后 Blazor 可以引用该项目。命令处理程序可以保留在应用程序层,因此删除任何数据库访问代码。
创建一个新的dotnet.standard -项目,名称类似于MyProject.Domain.Shared。在那里你放置了所有的通信(poco-)类。
共享项目由您的Domain-Project、Application-Layer和Client-Layer消耗。领域项目由应用程序层和持久层使用。
在共享项目中您放置:
在应用程序项目中,您输入:
在域项目中,您输入:
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |