我有带有EFCore的.Net Core应用程序。我创建了从IdentityDbContext继承的ApplicationDbContext类。
我想使用AspNetUsers DbSet进行授权和身份验证。然后在powershell控制台中,我输入了“更新数据库”,在PostgreSQL数据库中,我看到了一些表,包括AspNetRoles,AspNetUsers等,但是在项目中,我只有空的ApplicationDbContext。
那我该怎么办?我可以将数据库中的所有实体都放置到对象模型中,或者扩展IdentityDbContext并以某种方式向aspNetUsers添加属性。此外,如果我搭建实体实体,我将获得另一个新的DbContext,其中包含所有AspNetUsers和其他所有AspNetUsers。
答案 0 :(得分:1)
如果您可以使用IdentityUser
的标准实现,则只需从非泛型dbContext
继承IdentityDbContext
。
如果要使用自定义User类为身份创建dbContext,则需要从通用抽象类IdentityDbContext<T>
继承自定义dbContext类,其中T是您对User的自定义实现。此实现应继承自.NET IdentityUser
类已提供的内容。
另外,您还需要通过以下代码将dbContext
与Startup.cs中的身份相关联:
services.AddIdentity<MyCustomUser, IdentityRole>()
.AddEntityFrameworkStores<MyCustomSecurityContext>()...
我也不知道您为什么要尝试直接使用Identity上下文。通常,与用户,角色和声明有关的所有工作都是通过特定服务(例如UserManager<MyApplicationUser>
)完成的,这些服务隐藏了实现并提供了清晰清晰的API。您可以根据需要将它们注入。