如何,我可以使用ASP.NET身份與自定義表結構,是User
(UserId
,Password
)和UserRole
(UserId,IsAdmin,IsNormalUser,IsManager
) 隨着MVC 5? 我不想使用所有默認表,如AspNetUsers
,AspNetRoles
,AspNetUserClaims
,AspNetUserRoles
, AspNetUserLogins
?ASP.NET MVC5身份使用自定義的表結構
1
A
回答
1
使用OnModelCreating事件將表和/或列映射到您自己的模式,正如我在this StackOverflow question中所做的那樣。
這看起來會喜歡 -
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var user = modelBuilder.Entity<IdentityUser>().HasKey(u => u.Id).ToTable("User", "Users"); //Specify our our own table names instead of the defaults
user.Property(iu => iu.Id).HasColumnName("UserId");
user.Property(iu => iu.UserName).HasColumnName("UserName");
user.Property(iu => iu.PasswordHash).HasColumnName("Password");
user.Ignore(iu => iu.Email);
user.Ignore(iu => iu.EmailConfirmed);
user.Ignore(iu => iu.PhoneNumber);
user.Ignore(iu => iu.PhoneNumberConfirmed);
user.Ignore(iu => iu.AccessFailedCount);
user.Ignore(iu => iu.LockoutEnabled);
user.Ignore(iu => iu.LockoutEndDateUtc);
user.Ignore(iu => iu.SecurityStamp);
user.Ignore(iu => iu.TwoFactorEnabled);
user.HasMany(u => u.Roles).WithRequired().HasForeignKey(ur => ur.UserId);
user.Ignore(iu => iu.Logins);
user.Ignore(iu => iu.Claims);
modelBuilder.Ignore<IdentityUserClaim)();
modelBuilder.Ignore<IdentityUserLogin>();
...
}
這裏的流暢API的關鍵部分是ToTable([TableName], [SchemaName])和HasColumnName([ColumnName])
這可以適應要麼創建表時使用的標準實體框架Code First,或映射到現有數據庫或使用SQL腳本手動創建的數據庫。
更多關於代碼第一次看到Code First to a New Database(包括流利的API映射)
當你想要忽略的DbContext類的屬性,並排除被完全映射一些的DbContext類,你將要使用的.Ignore() extension method無映射屬性和.Ignore<T>() extension method的模型生成器的類。
這些屬性(和集合)仍將存在於內存中,但不會保留到數據庫中。
相關問題
- 1. Asp.net mvc5身份?
- 2. 返回自定義用戶數據MVC5 ASP.NET身份
- 3. 實現自定義身份驗證(MVC5)
- 4. 在asp.net中使用自定義登錄進行表單身份驗證mvc5
- 5. ASP.NET MVC5中的自定義身份驗證和授權?
- 6. 使用MVC5身份連接自定義角色
- 7. 在MVC5 ASP.NET身份中自定義cookie值
- 8. 自定義ASP.NET身份
- 9. Asp.NET身份自定義SignInManager
- 10. 自定義ASP.NET身份3
- 11. Asp.net身份2自定義用戶和自定義表名
- 12. 使用asp.net身份驗證與自定義身份驗證
- 13. 使用自定義「用戶」表的ASP.NET身份
- 14. 重寫Asp.net身份MVC5
- 15. Asp.net MVC - 映射要求自定義用戶身份的身份
- 16. 將自定義項目添加到mvc5中的用戶身份
- 17. ASP.NET身份的自定義實現
- 18. asp.net中的自定義身份驗證
- 19. 如何設置asp.net mvc身份的自定義身份驗證?
- 20. 自定義的Asp.net自定義數據庫的身份
- 21. 使用與自定義表的aspnet身份
- 22. asp.net身份與自定義角色
- 23. ASP.Net MVC自定義身份驗證
- 24. ASP.NET身份 - 自定義UserManager,UserStore
- 25. ASP.NET自定義Windows身份驗證
- 26. 自定義身份驗證asp.net MVC
- 27. 如何自定義ASP.Net身份
- 28. 自定義UserLoginInfo在Asp.Net身份
- 29. Azure MobileApp自定義身份驗證VS Asp.Net身份
- 30. ASP.net使用自定義數據庫的Windows身份驗證
也許你可以做一個自定義的界面,這裏是一個例子:http://www.asp.net/identity/overview/extensibility/overview-of-custom-storage-providers-for-aspnet-identity – Aristos
感謝Aristos !但仍然這個例子有所有的表與AspNet表相同,我的問題是我只有兩個表如上所述,沒有其他列。 –