C# 没有从IdentityUser继承的ASP.NET标识

C# 没有从IdentityUser继承的ASP.NET标识,c#,asp.net,asp.net-core,asp.net-identity,C#,Asp.net,Asp.net Core,Asp.net Identity,鉴于以下项目结构 App.Domain - .NET Standard Library User.cs App.Web - .NET Core Web Application MVC App.Web项目引用App.Domain项目。是否可以使用ASP.NET标识作为用户App.Domain.user,而不从IdentityUser继承 为什么? 遵循DDD指导原则,我应该保持域层与技术无关,这就是为什么我不想在域层中添加对ASP.NET标识的引用,并从IdentityUse

鉴于以下项目结构

 App.Domain - .NET Standard Library

     User.cs


 App.Web - .NET Core Web Application MVC
App.Web项目引用App.Domain项目。是否可以使用ASP.NET标识作为用户App.Domain.user,而不从IdentityUser继承

为什么?


遵循DDD指导原则,我应该保持域层与技术无关,这就是为什么我不想在域层中添加对ASP.NET标识的引用,并从IdentityUser继承我的用户类。

这是可能的,但是您必须自己实现所有数据存储接口。IdentityUser是Identity所需的数据存储接口的EntityFramework实现中的基类。您可以查看EF核心存储是如何实现的。您只需要实现自己的DbContext和类型,并在应用商店实现中引用它们,然后像注册一样注册它们。在95%的情况下,标识不是模型的一部分,当您开始处理时,您可能会进入跨域关注点(有界上下文a取决于有界上下文B)。在95%的情况下,身份是有助于确定用户身份的基础设施,因此在很大程度上取决于所使用的框架和平台。i、 e身份框架的更改可能会影响到您的所有域,这是您希望避免的(基础设施的更改会强制更改您的域)。请注意:您可能希望查看的评论,以了解我关于“身份不是域的一部分”的理由。就我个人而言,我不认为这是一个问题。无论框架如何,您的“用户”实体都是您的“用户”实体。Identity在其实现中非常轻量级,只需要简单的继承。如果以后需要将其关闭,只需将“用户”实体更改为不从该实体继承或从其他实体继承即可。引用用户类的任何其他实体都不需要更改。