c# - asp.net core identity 来自 BaseApplicationUser 的多个用户
问题描述
我正在为我的用户管理系统使用 ASP.NET Core 2.2 Identity。我需要有几种类型的用户......例如,仓库用户和应用程序用户,我创建了一个从身份用户类继承的基类 =>IdentityUser<long>
public class BaseApplicationUser : IdentityUser<long>
{
public string FirstName { set; get; }
public string LastName { set; get; }
...
}
仓库用户和商店用户继承自BaseApplicationUser
创建不同的用户。
public class ApplicationUser : BaseApplicationUser
{
}
我只想为所有这些人准备一张桌子=>AspNetUsers
添加OnModelCreating
此代码:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<ApplicationUser>();
builder.Entity<WarehouseApplicationUser>();
}
并在 Context 中的 DbSets 中:
public DbSet<ApplicationRole> ApplicationRole { get; set; }
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
public DbSet<WarehouseApplicationRole> WarehouseApplicationRole { get; set; }
public DbSet<WarehouseApplicationUser> WarehouseApplicationUsers { get; set; }
我需要为用户创建单独的角色类,比如ApplicationRole
和WarehouseApplicationUsers
.
有什么问题?
- 如何在 asp.net core Identity 中创建不同的用户?( 最好的办法 )
- 另一个问题是,当我向 中添加一个字段时
ApplicationUser
,该字段已成功添加到 中AspNetUsers
,但是当我向 中添加一个字段时WarehouseApplicationUsers
,EF Core 添加了名为WarehouseApplicationUsers
and的新表WarehouseApplicationRole
,WarehouseApplicationUserRole
然后向WarehouseApplicationUsers
表中添加了一个字段……这是什么!
最后,如何继承和构建不同用户的层次结构?非常感谢
解决方案
问题1:
How to create different users in asp.net core Identity ?
ASP.NET Core 提供了一个内置方法:AddIdentityCore<TUser>
.
你可以像这样使用它:services.AddIdentityCore<ApplicationUser>();
更多细节你可以看到这个线程。
问题2:
这是一个示例,您可以与您的代码进行比较:
基础应用用户:
public class BaseApplicationUser: IdentityUser
{
public string FirstName { set; get; }
public string LastName { set; get; }
}
应用用户:
public class ApplicationUser : BaseApplicationUser
{
public string Year { get; set; }
}
仓库应用用户:
public class WarehouseApplicationUser : BaseApplicationUser
{
public string Age { get; set; }
}
应用程序上下文:
public class ApplicationDbContext : IdentityDbContext<BaseApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
public DbSet<WarehouseApplicationUser> WarehouseApplicationUsers { get; set; }
}
推荐阅读
- javascript - 羽毛图标未显示在 react-data-table-component 列中
- java - 使用 Java 流添加到现有地图
- asp.net-core - 使用 OIDC 资源服务器保护 API
- python - 如何在“plt.contour”中为曲线添加图例条目?
- python - 如何重构我的代码以使用 vectorization/apply() 并替换此迭代?
- react-native - 为什么 Apollo Client cache.writeQuery 会更新整个组件并重置所有状态?
- c# - 如何使用脚本在 Unity 中模拟触摸/单击
- python-asyncio - Telegram API 异步函数的任务设置不正确
- python - 使用 python 枕头生成图像时出错
- data-binding - 将选中的 InputCheckbox 元素列表映射到表单模型上的字符串列表