- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试为我的 MVC 5、Identity 2.0 项目实现基于角色的安全性。我一直在网上查看一些教程,但有点卡住了。
我创建了以下内容:
public class Role : IdentityRole
{
public Role(string name) : base(name)
{ }
public Role()
{ }
public string Description { get; set; }
public string MenuIcon { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
}
和我的上下文:
new public DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
//rename the tables and columns used by the Identity Framework
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<UserRole>().ToTable("UserRole");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim");
}
和我的种子方法:
RoleManager roleManager = new RoleManager(new RoleStore<Role>(context));
roleManager.Create<Role, string>(new Role("Orders"));
但是,当我运行该应用程序时,它会为角色创建包含 2 个表的数据库:Role
(这是我希望角色存在的位置,它包含我的自定义属性)和 AspNetRoles
。它确实使用我在 Seed 方法中创建的角色填充了两个表。
我到底做错了什么,它正在创建 2 个表?
最佳答案
所有的 asp.net 表都应该识别新的表名,而不仅仅是更改后的表。
用户表:
public class User : IdentityUser<string, UserLogin, UserRole, UserClaim>
{
// Your properties
}
用户登录表:
public class UserLogin : IdentityUserLogin { }
用户角色表:
public class UserRole : IdentityUserRole { }
UserClaim 表:
public class UserClaim : IdentityUserClaim { }
角色表:这顶帽子要继承自IdentityRole<string, UserRole>
public class Role : IdentityRole<string, UserRole>
{
//Any relevant properties
public string Description { get; set; }
public string MenuIcon { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
}
数据上下文:这必须继承自IdentityDbContext<User, Role, string, UserLogin, UserRole, UserClaim>
public class YourDataContext : IdentityDbContext<User, Role, string, UserLogin, UserRole, UserClaim>
{
// Your DbSet items
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<UserClaim>().ToTable("UserClaim");
modelBuilder.Entity<UserLogin>().ToTable("UserLogin");
modelBuilder.Entity<UserRole>().ToTable("UserRole");
modelBuilder.Entity<User>().Property(r => r.Id);
modelBuilder.Entity<UserClaim>().Property(r => r.Id);
modelBuilder.Entity<Role>().Property(r => r.Id);
//Add your new properties of Role table in here.
}
}
在这个例子中,我使用表的 ID 作为 string
类型。
希望这对您有所帮助。
关于c# - 如何将 IdentityRole 扩展为自定义表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158288/
我正在写unit tests还有这个mapper再次让我悲伤。我从上一篇文章中了解到我不能 Mock mapper ,我必须立即使用它。所以我创建了maps但它说缺少类型 map configurat
我正在尝试为我的 MVC 5、Identity 2.0 项目实现基于角色的安全性。我一直在网上查看一些教程,但有点卡住了。 我创建了以下内容: public class Role : Identity
我在我的 .net core 3.1 Web 应用程序中播种用户时遇到问题。正在 SQL Server 上创建相应的表,但在我运行我的应用程序时没有创建任何行。我不知道为什么没有填充数据库。任何人都可
我正在使用 Identity 2.1 来处理我的 asp.net 应用程序中的用户角色。到目前为止,一切顺利,我创建了从 IdentityDBContext 扩展的新上下文,扩展了 IdentityU
使用身份2.0 注册用户后,在数据库中创建用户,帐户 Controller 中有代码用于创建身份并登录用户。这是我收到错误的时候。这是产生错误的代码: var identity = await Use
您好,我想为我的 aspnetcore2.0 + postgresql 项目添加基于角色的身份验证。为此我跟着 How to create roles in asp.net core and assi
我正在处理一个类似于 MVC 模板项目的项目。 我已经创建了一些我想在数据库中表示的模型。我可以很好地使用 DbContext 类创建它们,问题是将我类的 RoleId 与 ASP.Net Ident
当我尝试从 IdentityDbContext 继承 asp.net core 2.0 库中的 dbcontext 时,出现以下错误: 错误 CS0012 在未引用的程序集中定义了类型“Identit
我正在尝试使用 Autofac 为使用 MVC5 和 EF6 的项目设置依赖注入(inject)。 我很难弄清楚如何正确解耦 EntityFramework.RoleStore 实现。 我只想依赖 I
我一直在研究这个 quickstart example并且一直在尝试了解我可以在多大程度上自定义数据库(我有一个现有的数据库,我一直在尝试复制它)。 我已经设法触发了下面的异常并且无法修复它,部分原因
我刚刚像这样扩展了我的 AspNetRoles 表: public class AspApplicationRoles : IdentityRole { public AspApplicati
我已经将 Entity Framework 创建的 AspNetRoles 扩展为如下所示: public class AspNetRoles:IdentityRole { publi
我正在使用 ASPNet Identity 在我的 Web 应用程序中实现安全性。 有一个要求,我需要扩展IdentityRole 和IdentityUser。 这是我扩展 IdentityUser
与此相关的问题,在这里... UserManager.AddToRole not working - Foreign Key error 在我的应用程序中,我有一个自定义角色实现 public cla
在之前的版本中,我能够为我的模型提供身份包中的用户数量,特别是 IdentityRole: model = roleManager.Roles.Select(r => new Appl
我正在我的项目中开发一个 Controller 。我正在尝试执行以下操作: string role = "something"; var newRole = new IdentityRole(); n
我正在编写 IdentityRoleManager 的扩展以允许 Multi-Tenancy 角色。不同租户中的角色可以同名,他们可以将自己的声明分配给角色。 如何在表中允许重复的角色名称?我打算通过
我正在使用 Identity2.0 与 MVC5 CodeFirst 我已经扩展了 IdentityUser和 IdentityRole像这样: public class ApplicationUse
我希望能够扩展 IdentityRole 的默认实现以包含像描述这样的字段。为 IdentityUser 执行此操作很容易,因为 IdentityDbContext 采用 IdentityUser 类
有没有办法在 IdentityUser、IdentityRole 和 IdentityDbContext 中创建自定义用户和角色而不指定 TKey string ?我问是因为它似乎认为我不再想要自动生
我是一名优秀的程序员,十分优秀!