簡體   English   中英

如何在Net Core Web API中擴展身份

[英]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進行了更新,如下所示: 數據庫創建

已成功創建具有所有標識表和自定義表的Db。

在Internet上查看時,我發現使用Asp.Net Web Api的Identity版本,似乎需要覆蓋自定義用戶類中的方法,因此可以保存類的屬性。

我跟着本教程以實現網絡API身份,大部分教程使用Identity與MVC不是純Web API: 教程我跟着

我的問題是:

如何使用POST操作創建Controller,以便可以注冊用戶。 我需要在自定義用戶類中進行哪些修改,以便將自定義屬性保存在Db中。

同樣,當我注冊我的用戶時,它必須具有我的類中的屬性:FirstName,LastName和BirthDay。 我的意思是,它們不能為null,必須將其填充,如果它們為空,則無法將其保存到數據庫。

謝謝

看一下 GitHub存儲庫中的示例:

例如,對於控制器中的POST,您可以查看register方法(您真正要尋找的方法是UserManager對象上的CreateAsync方法)

https://github.com/aspnet/Identity/blob/master/samples/IdentitySample.Mvc/Controllers/AccountController.cs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM