[英]How to extend Identity in Net Core Web API
嗨,我使用的是EntityFramework Core,並且想將內置的身份驗證與Net Core Web Api一起使用,所以我這樣做的原因如下:
-創建一個從IdentityUser擴展的類,並添加自定義屬性:
public class MyUser : IdentityUser {
public MyUser(string username) : base (username) { }
public string FirstName { set; get; }
public string LastName { set; get; }
public DateTime BirthDate { set; get; }
}
創建我的從IdentityDbContext繼承的數據庫上下文類:
public class DBContext : IdentityDbContext<MyUser> {
public DBContext (DbContextOptions<DBContext> options) : base (options) { }
public DbSet<Story> Stories { set; get; }
protected override void OnModelCreating (ModelBuilder builder) {
base.OnModelCreating (builder);
}
}
然后,在Startup.cs中(在ConfigureServices方法中)注冊了自定義類和數據庫上下文:
public void ConfigureServices (IServiceCollection services) {
var connection = @"Server=(localdb)\mssqllocaldb;Database=DBEF;Trusted_Connection=True;";
services.AddDbContext<DBContext> (options => options.UseSqlServer (connection,
optionsBuilder => optionsBuilder.MigrationsAssembly ("WebApiEFCore")));
services.AddIdentity<MyUser, IdentityRole> ()
.AddEntityFrameworkStores<DBContext> ()
.AddDefaultTokenProviders ();
services.Configure<IdentityOptions> (o => {
o.SignIn.RequireConfirmedEmail = true;
});
services.AddMvc ();
}
已成功創建具有所有標識表和自定義表的Db。
在Internet上查看時,我發現使用Asp.Net Web Api的Identity版本,似乎需要覆蓋自定義用戶類中的方法,因此可以保存類的屬性。
我跟着本教程以實現網絡API身份,大部分教程使用Identity與MVC不是純Web API: 教程我跟着
我的問題是:
如何使用POST操作創建Controller,以便可以注冊用戶。 我需要在自定義用戶類中進行哪些修改,以便將自定義屬性保存在Db中。
同樣,當我注冊我的用戶時,它必須具有我的類中的屬性:FirstName,LastName和BirthDay。 我的意思是,它們不能為null,必須將其填充,如果它們為空,則無法將其保存到數據庫。
謝謝
看一下其 GitHub存儲庫中的示例:
例如,對於控制器中的POST,您可以查看register方法(您真正要尋找的方法是UserManager對象上的CreateAsync方法)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.