【问题标题】:How to extend Identity in Net Core Web API如何在 Net Core Web API 中扩展身份
【发布时间】: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 进行了更新,您可以在此处看到:

已成功创建包含所有身份表和自定义表的 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


【解决方案1】:

查看their GitHub 存储库中的示例:

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

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

【讨论】:

  • 链接坏了!
  • 固定@Sangeeta
猜你喜欢
  • 2020-10-15
  • 2021-03-21
  • 2019-02-19
  • 2017-04-27
  • 1970-01-01
  • 2017-09-05
  • 2020-09-05
  • 1970-01-01
  • 2020-11-15
相关资源
最近更新 更多