开展农业信息网站建设工作,艾睿网站建设,专门建立网站的公司吗,做网站要学的知识推荐关注「码侠江湖」加星标#xff0c;时刻不忘江湖事ASP.NET Core 内置了一个强大的身份认证框架 Identity#xff0c;掌握它可以让我们快速开发高安全的身份认证功能#xff0c;不仅如此#xff0c;它还是一个基于数据库的用户管理系统#xff0c;其中包含了大量的辅助… 推荐关注「码侠江湖」加星标时刻不忘江湖事ASP.NET Core 内置了一个强大的身份认证框架 Identity掌握它可以让我们快速开发高安全的身份认证功能不仅如此它还是一个基于数据库的用户管理系统其中包含了大量的辅助功能可以帮助我们完成对用户的管理。它还可以与 IdentityServer 4 授权无缝集成进一步开发出强大的认证授权系统。这个系列的目的就是快速学习和上手 Identity 让大家对其有一个系统的了解内容较为精炼不会有太多废话。集成 Identity在我们创建 ASP.NET Core 应用时可以选择已经集成了 Identity 的项目模板。不过我们现在的目的是学习所以我并不打算用项目模板来演示而是从一个简单的 MVC 项目从头开始集成 Identity。示例项目https://github.com/zilor-net/IdentitySample/tree/main/Sample01/Start这个示例使用 EF Core 与数据库交互启动项目时会自动迁移模型。在 Home 控制器中添加了一个 Employees 操作用来从数据库中查询员工信息集成 Identity我们需要做的第一件事就是安装 Identity EFCore 扩展库Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore这个库会帮助我们将 ASP.NET Core Identity与现有的 EF Core 集成在一起。安装完成后在 「Models」 文件夹中创建一个 「User」 实体类public class User : IdentityUser
{public string FirstName { get; set; }public string LastName { get; set; }
}这个类需要继承 ASP.NET Core Identity 提供的 IdentityUser 类。IdentityUser 类中有很多关于用户信息的属性这些属性在迁移时都会参与到与 ASP.NET Core Identity 相关的表中。因此对于 「User」 类我们只需要扩展 IdentityUser 类添加一些自定义的用户属性就可以了这些属性也都会添加到数据库中。当然如果你觉得 IdentityUser类中的属性可以满足你的需求那就不用创建额外的 「User」 类。换句话说只有在你需要对 IdentityUser 类进行扩展时才需要创建自定义的 「User」 类。现在修改 「ApplicationContext」 类public class ApplicationContext : IdentityDbContextUser
{// ...protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.ApplyConfiguration(new EmployeeConfiguration());}//...
}这里我们需要使用集成了 Identity 的 「DbContext」 类而不是原始的 「DbContext」。还需要在 「OnModelCreating」 方法中调用基类的 「OnModelCreating」 方法因为它有一些与 Identity 实体相关的配置。配置 Identity我们可以在 「ConfigureServices」 方法中注册 ASP.NET Core Identity 相关服务。注册的扩展方法有两个builder.Services.AddIdentityUser, IdentityRole().AddEntityFrameworkStoresApplicationContext();builder.Services.AddIdentityCoreUser().AddEntityFrameworkStoresApplicationContext();「AddIdentityCore」 方法只会添加用户管理操作如创建用户、散列密码、密码验证等所需的服务。「AddIdentity」 方法不仅会添加用户管理服务还会添加支持外部身份验证以及角色管理相关的服务。根据你的需要可以使用不同的方法注册不同的服务这里我们使用 「AddIdentity」 方法。还需要使用 「AddEntityFrameworkStores」 方法注册与 Identity 数据存储相关的 EF Core 实现。现在我们需要创建一个新的迁移在数据库中添加 Identity 相关的表Add-Migration IdentityScheme
Update-Database更新完成后打开数据库可以看到多了很多 ASPNET 前缀的表。展开 「AspNetUsers」 表的列我们可以找到刚才 「User」 类中自定义的两个属性不过需要注意的是由于我们采用的是基于角色的用户管理而现在这个数据库中没有任何角色信息。所以我们需要创建一些初始数据。在数据库中设置初始角色是一个非常常见的操作在 「Models\Configuration」 文件夹中创建一个 「IdentityRole」 实体配置类public class RoleConfiguration : IEntityTypeConfigurationIdentityRole
{public void Configure(EntityTypeBuilderIdentityRole builder){builder.HasData(new IdentityRole{Name Guest,NormalizedName GUEST},new IdentityRole{Name Administrator,NormalizedName ADMINISTRATOR});}
}这里有两个初始角色数据然后在上下文中应用这个配置modelBuilder.ApplyConfiguration(new RoleConfiguration());最后让我们再次创建并应用迁移Add-Migration InsertedRoles
Update-Database查看数据库中的 「AspNetRoles」 表可以看到这里已经有了两条角色数据。目前为止我们已经在项目中初步集成了 ASP.NET Core Identity 框架可以看到这一点不复杂而且非常简单。小结这篇文章简单的介绍了 Identity 框架的集成以及一些基础知识下篇文章将会继续讲解用户的注册。更多精彩内容请关注我▼▼如果喜欢我的文章那么在看和转发是对我最大的支持戳下面蓝字阅读ASP.NET 6 中间件系列ASP.NET 最通俗易懂的依赖注入系列查缺补漏系统学习 EF Core 6 系列老子不亏是程序员的祖师爷不得不知的超精简 HTTP 协议推荐关注微信公众号码侠江湖 觉得不错点个在看再走哟