身份模型的Blazor最佳做法

时间:2020-04-05 17:05:30

标签: blazor identity blazor-webassembly

我目前正在使用Blazor 3.2 Preview 3开发Web应用程序。我正在使用WebAssembly版本和Identity。 我的应用程序包括3个部分:客户端,服务器和共享。 (就像基本模板一样)。

我的模型类存储在“共享”部分中。但是,“用户”的模型类存储在“服务器”文件夹中。

我想使用一种模型(存储在Shared项目中):

 public virtual ApplicationUser User { get; set; }

这是不可能的,因为共享项目无权访问服务器项目。

我是否必须将所有模型类放入服务器,并在共享部分中使用DTO?

是将我所有的类放到Shared文件夹中(包括ApplicationUsers)吗?

什么是最佳做法?

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为共享项目无权访问服务器项目。

这不是必需的:您可以将ApplicationUser移到Shared并将Microsoft.Extensions.Identity.Stores nuget包添加到Shared。这就是定义IdentityUser的地方。但是,这不是最佳实践。除其他问题外,这还会大大增加您的客户端应用程序的大小。

我是否必须将所有模型类放在服务器中,并在共享部分中使用DTO?

这是首选模式,当然在更大的项目之前。对于某些小问题,模型类和DTO之间的区别有时会变得模糊。但是,由于IdentityUser带来了一些依赖关系,并且包含了客户端上不需要或不需要的字段,因此创建ApplicationUserDto总是值得的。