[英]How to add more user data to ASP.NET MVC user.Identity
如何為用戶身份擴展或添加更多方法?
注冊用戶時,在 header 導航中,用戶名指定為用戶 email。 如何自定義用戶身份以添加更多數據,例如。 User.Identity.GetFullname()
。 我正在使用 ASP.NET MVC。
如果您只想為您的 IdentityUser 添加更多字段,那么您可以在 class 的幫助下簡單地擴展它。
例如,新建一個 class:
public class ApplicationUser : IdentityUser{
public string FullName { get; set;}
}
您何時將遷移應用到您的數據庫,您會看到會有一個額外的列FullName 。
您不應重新創建已存儲在現有 AspNetUsers 表中的屬性。(例如:Id、Email、用戶名等。)因為這不會重新生成整個表,而只是將新列添加到 AspNetUsers 表中。
但是還有另一種方法,我認為這部分很重要。
讓我們假設您有一個Product.cs
:
public class Product {
public int Id { get; set;}
public string ProductNo { get; set; }
public string ProductName { get; set;}
}
並且您已經使用DbContext
來應用有關產品 Model 的遷移。
可能DbContext.cs
將是:
public class DataContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=YourServer; Database=DbName; integrated security=true;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//This can be used.
}
public DbSet<Product> Products { get; set; }
}
通常,您的ApplicationUser
的DataContext
將是這樣的:
public class ApplicationIdentityDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationIdentityDbContext(DbContextOptions<ApplicationIdentityDbContext> options) : base(options){}
}
這是創建數據上下文的簡單方法。 但是,當您想定義與這 2 個表(Products 和 AspNetUsers)的關系時,它可能是所有用戶都有自己的Product
的關系,那么您很可能會收到錯誤,或者您將無法控制 2 個不同的 DataContext。
因此,為了避免這些問題,僅使用1 個數據上下文將是一個更好的解決方案,它應該如下所示:
public class DataContext: IdentityDbContext<ApplicationUser>
{
public DataContext(DbContextOptions<DataContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
現在您可以在ApplicationUser
和Product
之間簡單地定義ForeignKeys 。
例如:
public class ApplicationUser: IdentityUser{
public string FullName { get; set; }
public int? ProductId { get; set; }
public Product Product { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.