|
描述
asp.net Core Identity提供给我们一组工具包和API,能帮助我们应用程序创建授权和认证功能。也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。
1.创建项目
- 配置项
- nuget包
- Microsoft.AspNetCore.Identity.EntityFrameWorkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
Program.cs- app.UseAuthorization();
- app.UseAuthorization();
复制代码
- 设置Asp.net Core Identity
User类
- User类继承IdentityUser类,位于Microsoft.AspNetCore.Identity中
- 在Models文件夹中穿件AppUser类
- IdentityUser类中提供了一些用户属性,如:用户名、电子邮件、电话、密码hash值等。
- 如果IdentityUser类不能满足要求,可以在AppUser中添加自定义的属性
复制代码 IdentityUser常用属性
名称描述ID用户唯一IDUserName用户名称Email用户EmailPasswordHash用户密码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": "*"
- }
复制代码 在AddDbContext()方法中添加AppIdentityDbContext类并且指定它使用SqlServer数据库,连接字符串从配置文件中读取点击查看代码- 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();
复制代码 - AddIdentity方法的参数类型指定AppUser类和IdentityRole类- AddEntityFrameworkStore方法指定Identity使用EF作为存储和项目中使用AppIdentityContext作为Db Context- AddDefaultTokenProviders方法添加默认Token提供程序,针对重置密码,电话号码和邮件变更操作以及生成双因子认证的token- 添加了app.UseAuthentication()方法,经过这个方法的每个http请求将用户的凭据添加到Cookie中或URL中,这使得用户和它发送的http请求会产生关联。使用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
来源:https://www.cnblogs.com/xiaoxi888/archive/2023/07/20/17567738.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|