我想,這可以解決你的問題:
在型號\ IdentityModels.cs你可以重新定義自己的用戶模式:
public class ApplicationUser : IdentityUser
{
/* identity field from database */
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Required]
public bool Internal { get; set; }
public string UserFullName { get; set; }
public string UserEmail { get; set; }
public ApplicationUser()
: base()
{
Internal = false;
}
public ApplicationUser(string userName)
: base(userName)
{
Internal = false;
}
}
現在,您可以更改默認的映射AspNet表使用OnModelCreating()覆蓋和ToTable()方法:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Change the name of the table to be Users instead of AspNetUsers
modelBuilder.Entity<IdentityUser>().ToTable("User");
modelBuilder.Entity<ApplicationUser>().ToTable("User");
modelBuilder.Entity<IdentityRole>().ToTable("Role");
modelBuilder.Entity<IdentityUserClaim>().ToTable("User_Claim");
modelBuilder.Entity<IdentityUserLogin>().ToTable("User_Login");
modelBuilder.Entity<IdentityUserRole>().ToTable("User_Role");
}
}
最後,你會在數據庫中看到如下表: 用戶,角色,USER_ROLE,User_Claim,USER_LOGIN代替AspNetUsers,AspNetRoles,AspNetUsersRoles,AspNetUsersClaims,AspNetUserLogins。
當然的用戶表將包含額外的字段:用戶ID (INT標識),內部,UserFullName和USEREMAIL。
我真的很想看到一個例子。我試圖實現我自己的,但結束了一些索賠身份問題,導致AntiFogeryToken失敗。當我爲我自己的用戶類使用Microsoft.AspNet.Identity.IUser時會發生。 – Martin
@霍恭,我想看一個自上而下的例子。我也想避免「MyUsers」的新表。您能否在示例中包含具有自定義字段的角色? – KidCoke
@Hao Kung,你會舉一個例子嗎? – RezaRahmati