1 ASP.NET Core Identity框架
Identity (标识)框架:采用的是基于角色的访问控制策略(Role-Based-Controll-Access),内置了对用户、角色等表的管理以及相关的接口,支持外部登录、2FA等。
Identity框架使用EFcore对数据库进行操作(默认使用的SqlServer的数据库),这也意味值标识框架几乎支持所有的数据库。
Identity 框架是AspNetCore中内置的一个帮开发人员简化用户角色等处理的一个框架。 这是因为框架底层已经根据权限设计设计了相应的表并提供了权限设计的相关接口,引入Identity框架后,调用框架提供的API就可以完成我们的业务逻辑。
2 AspNetCore中配置Identity
导入nuget包
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.32" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.17"/>
前提使用的是AspNetCore3.1,依赖的nugetMicrosoft.AspNetCore.Identity.EntityFrameworkCore版本为3.1.32。值得注意的是Microsoft.AspNetCore.Identity.EntityFrameworkCore同时整合了EntityFramworkCore和Identity,默认使用的是 S q l S e r v e r \textcolor{red}{SqlServer} SqlServer的数据库。这里演示同样适用SQLServer的数据库作为演示
Microsoft.EntityFrameworkCore.SqlServer 5.0.17 sqlserver的数据库驱动
Microsoft.EntityFrameworkCore.Tools 5.0.17 数据库迁移命令工具包 (Add-Migration xxx Update-Database)
在Identity框架中有两个非常中的类 。其中 Tkey代表了主键的类型
-
用户 I d e n t i t y U s e r < T k e y > \textcolor{red}{ IdentityUser<Tkey>} IdentityUser<Tkey> 定义了用户id,用户名,手机号,密码hash值等属性
-
角色 I d e n t i t y R o l e < T k e y > \textcolor{red}{ IdentityRole<Tkey>} IdentityRole<