【发布时间】:2018-01-04 19:55:17
【问题描述】:
您好,我正在使用 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。
我在网上找了一个使用 Asp.Net Web Api 的 Identity 版本,看来我需要在我的自定义用户类中重写一个方法,所以我的类的属性被保存了。
我按照本教程在 Web Api 中实现 Identity,大多数教程使用 Identity with MVC 而不是纯 Web API:Tutorial I followed
我的问题是:
如何创建一个带有 POST 操作的控制器,以便我可以注册 用户。我需要在我的自定义用户类中修改什么以便我可以 将我的自定义属性保存在 Db 中。
另外,当我注册我的用户时,它必须具有我的属性 类:名字、姓氏和生日。我的意思是他们不能 为 null ,它们必须被填充,如果它们是空的,那么你不能 将其保存到数据库中。
谢谢
【问题讨论】:
-
本教程解释了如何创建AaccountController。你到底在哪里卡住了?
-
@Win 教程很棒,但我想要我的自定义用户表,所以我从 IdentityUser 扩展以添加自定义字段,我不知道如何保存我的自定义字段
-
嗨@AngelSilva,你是如何解决你的问题的?我也有类似情况。
-
嗨@AngelSilva,您可以对类中的每个属性使用数据注释以允许在DB中为null或不为null,因此无需手动添加验证
标签: c# asp.net-core asp.net-core-webapi asp.net-core-identity