blazor - 使用标识模型的 Blazor 最佳实践
问题描述
我目前正在使用 Blazor 3.2 preview 3 开发一个 Web 应用程序。我正在使用 WebAssembly 版本和 Identity。我的应用程序由 3 部分组成:客户端、服务器和共享。(就像基本模板一样)。
我的模型类存储在共享部分。但是,Users 的模型类存储在 Server 文件夹中。
我想在我的一个模型中使用(存储在共享项目中):
public virtual ApplicationUser User { get; set; }
这是不可能的,因为共享项目无权访问服务器项目。
我是否必须将所有模型类放在服务器中并在共享部分中使用 DTO?
而是将我的所有课程都放在 Shared 文件夹中(包括 ApplicationUsers)?
最佳做法是什么?
解决方案
这是不可能的,因为共享项目无权访问服务器项目。
这不是必需的:您可以将 ApplicationUser 移动到 Shared 并将 Microsoft.Extensions.Identity.Stores nuget 包添加到 Shared。那就是IdentityUser
定义的地方。但是,这不是最佳做法。除其他问题外,它会大大增加您的客户端应用程序的大小。
我是否必须将所有模型类放在服务器中并在共享部分中使用 DTO?
这是首选模式,当然对于更大的项目。对于一些小的东西,模型类和 DTO 之间的区别有时会变得模糊。但是因为 IdentityUser 引入了一些依赖项,并且包含了您在客户端上不需要或不需要的字段,所以创建 ApplicationUserDto 总是值得的。
推荐阅读
- javascript - 在循环中使用 .getAttribute 添加样式
- java - 附加记录器 - log4j / slf4j / Spring / WildFly
- ruby-on-rails - Rails Action Mailer 并在发送电子邮件时返回 Status 200
- regex - 搜索出现在同一文件中但可能不在同一行的文件中的两个模式
- javascript - 从 URL 下载视频在移动视图中工作正常,而不是在 HTML 的桌面视图中
- r - Groupby 和 ifelse 或替换
- javascript - 将 Express 应用程序迁移到 NestJS
- php - 如何将图片标签包裹在 img 标签周围
- java - 使用 BOMInputStream 跳过 BOM 并在没有 BOM 的情况下检索 byte[]
- visual-studio-code - 从 VS Code 运行 F# Hello World