繁体   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