首页 文章

使用自定义用户而不是ASP.NET IdentityUser

提问于
浏览
2

我是ASP.NET身份的新手,并尝试自定义创建新MVC项目时提供的身份 .

ASP.NET Identity会自动为句柄身份验证和授权创建一些表 .

我的主要目标是创建Users表,但其他人 . 我尝试使用代码来防止创建这些表:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Ignore<IdentityUserRole>();
        modelBuilder.Ignore<IdentityUserClaim>();
        modelBuilder.Ignore<IdentityRole>();
    }

当我想创建用户时,返回错误:

导航属性'Roles'不是'ApplicationUser'类型的声明属性 . 验证它是否未从模型中明确排除,并且它是有效的导航属性 .

我发现内置的Identity用户具有以下结构:

IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>

我需要的是创建一个不包含角色,声明等的自定义IdentityUser . 我只想在运行项目时使用表'Users' .

是否有可能创建自己的IdentityUser或自定义内置的IdentityUser?或者任何建议只是创建'用户'表并使用它?

非常感谢您的建议 .

1 回答

  • 1

    这就是我为了获得解决方案所做的:

    • 我删除了base.OnModelCreating

    • 然后我按此顺序添加了忽略 .

    //base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<IdentityUser>().ToTable("User");
    modelBuilder.Entity<IdentityUser>().ToTable("User").Ignore(p => p.Roles);
    modelBuilder.Ignore<IdentityUserRole>();
    modelBuilder.Ignore<IdentityUserLogin>();
    modelBuilder.Ignore<IdentityUserClaim>();
    modelBuilder.Ignore<IdentityRole>();
    

    这样做我得到了一个最后的错误,它说:无法删除对象'dbo.Role',因为它是由FOREIGN KEY约束引用的 .

    为此我改变了移动DropTable(“dbo.Role”)的迁移 . 我知道这是黑客,但我没有发现EF迁移如何将droptables句子移动到正确的顺序 .

    理查德

相关问题