首页 > 解决方案 > ASP.NET Core 3.1 默认身份验证如何工作?

问题描述

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

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

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

所以,这里有一些具体的问题:

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

  2. 如何修改登录和注册视图?没有“Login.cshtml”或“Register.cshtml”或任何类似的东西。

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

标签: c#asp.netasp.net-mvcasp.net-core

解决方案


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

要添加脚手架页面,右键单击项目/新脚手架项目/身份/添加,你会得到这个页

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

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

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

推荐阅读