描述
asp.net Core Identity提供给我们一组工具包和API,能帮助我们应用程序创建授权和认证功能。也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。
1.创建项目
- 配置项
- nuget包
- Microsoft.AspNetCore.Identity.EntityFrameWorkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- nuget包
- 配置项目
Program.cs
app.UseAuthorization();
app.UseAuthorization();
-
设置Asp.net Core Identity
User类
User类继承IdentityUser类,位于Microsoft.AspNetCore.Identity中 在Models文件夹中穿件AppUser类 IdentityUser类中提供了一些用户属性,如:用户名、电子邮件、电话、密码hash值等。 如果IdentityUser类不能满足要求,可以在AppUser中添加自定义的属性
IdentityUser常用属性
名称 | 描述 |
---|---|
ID | 用户唯一ID |
UserName | 用户名称 |
用户Email | |
PasswordHash | 用户密码Hash的值 |
PhoneNumber | 用户电话号码 |
SecurityStamp | 当每次用户的数据修改时生成随机值 |
创建Database Context
DataBase Context类继承IdentityDbContext<T>类,T表示User类,在应用程序中使用AppUser,IdentityDbContext通过使用EntityFrameworkCore和数据库进行交互
AppIdentyDbContext继承IdentityDbContext
namespace IdentityDemo1.Models
{
public class AppIdentityDbContext : IdentityDbContext<AppUser>
{
public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : base(options)
{
}
}
}
创建数据库字符串连接
appsettings.json中配置
appsettings.json中配置数据库连接字符串
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"ConnectionStrings": {
"Default": "Data Source=.;Initial Catalog=IdentityDemo;Integrated Security=True;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=true"
},
"AllowedHosts": "*"
}
点击查看代码
builder.Services.AddDbContext<AppIdentityDbContext>(opt =>
{
opt.UseSqlServer(builder.Configuration["ConnectionStrings:Default"]);
});
添加Asp.Net Identity服务
添加Asp.Net Identity服务
builder.Services.AddIdentity<AppUser, IdentityRole>()
.AddEntityFrameworkStores<AppIdentityDbContext>()
.AddDefaultTokenProviders();
使用EF Migration命令创建Identity数据库
nuget命令
nuget EntityFrameworkCore.Tool
Add-Migration InitCreateDB
update-database
执行后的结果是
包含用户记录,角色,Claims,token 和登录次数详细信息等。
- __EFMigrationsHistory:包含了前面所有的Migration
- AspNetRoleClaims :按角色存储Claims
- AspNetRoles:存储所有角色
- AspNetUserClaims :存储用户的Claims
- AspNetUserLogins :存储用户的登录次数
- AspNetUserRoles: 存储用户的对应的角色
- AspNetUsers:存储用户
- AspNetUserTokens 存储外部认证的token
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!
Tags:
entity