ASP.NET Core 3.1默认身份验证如何工作?

时间:2020-07-02 12:54:17

标签: c# asp.net asp.net-mvc asp.net-core

我创建了一个新的ASP.NET Core 3.1 MVC项目,该项目具有“个人用户帐户”身份验证。

如果我运行该应用程序,然后单击导航栏中的“注册”链接,它将重定向到:https://localhost:44337/Identity/Account/Register

但是,没有名为“ Identity”或“ Account”的控制器,也没有名为“ Register”的操作。我也找不到代表用户帐户的“模型”。因此,它们似乎位于ASP.NET Core源代码中的某个位置。

所以,这是具体问题:

  1. 注册新用户时,默认模板直接在数据库上运行。如何制作“假”类以避免在开发过程中对数据库进行操作,并在以后轻松地恢复使用数据库?

  2. 如何修改登录和注册视图?没有“ Login.cshtml”或“ Register.cshtml”或任何此类内容。

  3. 如何扩展用户模型功能,例如在“出生日期”中添加字段?

3 个答案:

答案 0 :(得分:2)

您提到的默认页面是“内置”的。如果要覆盖它们,则需要在要覆盖的页面上运行脚手架。

要添加脚手架页面,请右键单击项目/新的脚手架项目/标识/添加,您将获得此page

勾选要覆盖的页面,它将为您生成它们的源代码。

运行迁移时,使用.HasData在数据库中创建种子条目,如here

modelBuilder.Entity<Post>().OwnsOne(p => p.AuthorName).HasData(
   new { PostId = 1, First = "Andriy", Last = "Svyryd" },
   new { PostId = 2, First = "Diego", Last = "Vega" });

答案 1 :(得分:1)

关于问题3,您可以创建自己的用户类,该类从IdentityUser扩展:

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
}

然后在您的ApplicationDbContext.cs中注册它:

public DbSet<ApplicationUser> Users { get; set; }

答案 2 :(得分:0)

您需要该类cshtml文件全部存在的检查区域文件夹。