[英]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.