当前位置: 首页 > news >正文

C# Web开发教程(九)标识框架[Identity]

标识(Identity)框架

  • AuthenticationAuthorization
- Authentication: 认证,你是谁
- Authorization: 权限,你有什么权限
  • 1、标识(Identity)框架: 采用基于角色(Role)的访问控制
- (Role-Based Access Control,简称RBAC)策略,内置了对用户、角色等表的管理以及相关的接口,支持外部登录、2FA等。
- 标识框架使用EF Core对数据库进行操作,因此标识框架支持几乎所有数据库。
  • Identity框架使用
    - IdentityUser<TKey>、IdentityRole<TKey>,TKey代表主键的类型。我们一般编写继承自ldentityUser<TKey>、IdentityRole<TKey>等的自定义类,可以增加自定义属性。- NuGet安装: - Install-Package Microsoft.EntityFrameworkCore -Version 6.0.0- Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 6.0.0- Install-Package Microsoft.EntityFrameworkCore.Tools -Version 6.0.0- Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore  -Version 6.0.0- 创建继承自ldentityDbContext的类- 可以通过ldDbContext类来操作数据库,不过框架中提供了RoleManager、UserManager等类来简化对数据库的操作。- 部分方法的返回值为Task<IdentityResult>类型
// MyUser.csusing Microsoft.AspNetCore.Identity;namespace WebApplicationAboutIdentity
{// 默认的 IdentityUser 使用 string 类型主键,这里改为 longpublic class MyUser:IdentityUser<long>{}
}// MyRole.cs
using Microsoft.AspNetCore.Identity;namespace WebApplicationAboutIdentity
{public class MyRole:IdentityRole<long>{}
}// MyDbContext.csusing Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;namespace WebApplicationAboutIdentity
{// 继承 IdentityDbContext,指定自定义的用户类型、角色类型和主键类型// 会自动创建 Identity 相关的所有表(Users、Roles、UserRoles 等)public class MyDbContext : IdentityDbContext<MyUser,MyRole,long>{public MyDbContext(DbContextOptions<MyDbContext> options) : base(options){}}
}// DbContextDesignTimeFactory.csusing Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;namespace WebApplicationAboutIdentity
{public class DbContextDesignTimeFactory: IDesignTimeDbContextFactory<MyDbContext>{public MyDbContext CreateDbContext(string[] args){// 配置数据库连接,用于 EF Core 迁移命令DbContextOptionsBuilder<MyDbContext> builder = new DbContextOptionsBuilder<MyDbContext>();string connStr = "Server=.;Database=idtest1;Trusted_Connection=True;";builder.UseSqlServer(connStr);MyDbContext ctx = new MyDbContext(builder.Options);return ctx;}}
}// Program.cs......
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using WebApplicationAboutIdentity;var builder = WebApplication.CreateBuilder(args);
......// 数据库配置
builder.Services.AddDbContext<MyDbContext>(opt =>
{opt.UseSqlServer("Server=.;Database=idtest1;Trusted_Connection=True;");
});
// Identity 配置
builder.Services.AddDataProtection();
builder.Services.AddIdentityCore<MyUser>(options =>
{// 简化密码策略options.Password.RequireDigit = false;options.Password.RequiredLength = 6;options.Password.RequireLowercase = false;options.Password.RequireNonAlphanumeric = false;options.Password.RequireUppercase = false;// 设置令牌提供程序options.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultEmailProvider;options.Tokens.EmailConfirmationTokenProvider = TokenOptions.DefaultEmailProvider;
});
// Identity 构建器
// 指定用户和角色类型,配置使用 Entity Framework 存储,添加默认令牌提供程序,注册用户管理器和角色管理器
IdentityBuilder idBuilder = new(typeof(MyUser),typeof(MyRole),builder.Services);
idBuilder.AddEntityFrameworkStores<MyDbContext>().AddDefaultTokenProviders().AddUserManager<UserManager<MyUser>>().AddRoleManager<RoleManager<MyRole>>();var app = builder.Build();
......app.Run();- 最后,作数据库迁移并更新数据库
  • 小结:这个配置为应用程序提供了完整的用户认证和授权基础架构
- 自定义主键类型: 使用 long 代替默认的 string
- 简化的密码策略: 降低了密码复杂度要求
- 完整的 Identity 功能: 包含用户管理、角色管理、令牌生成等
- SQL Server 存储: 使用 Entity Framework Core 和 SQL Server

数据库

http://www.jsqmd.com/news/23290/

相关文章:

  • 2025NFC与电子标签推荐榜:深圳中签科技领跑,NFC 标签/芯片/卡、电子芯片/标签高效应用方案精选
  • 行业震动!罗永浩数字人电商直播首秀创下AI直播新标杆!
  • 2025充电桩推荐榜:山东康姆勒电力领跑,直流/电动重卡/公共/快充/重卡/160kw/400kW /群充/新能源/充电桩高效补能方案实力之选
  • 2025年有实力冷拔丝优质厂家推荐榜单
  • 2025修护/二硫化硒去屑/香氛/控油蓬松/ 洗发水推荐榜:MASIL 玛丝兰领衔,修护 / 去屑 / 控油蓬松品类的实力之选
  • 2025-10-27 在浏览器打开网站A输入数字后变成小动物,其他网站为正常数字输入 ==》 修改字体
  • 2025年知名的导热油电加热器实力厂家TOP推荐榜
  • 2025年知名的不锈钢雕塑最新TOP品牌厂家排行
  • 2025年热门的输送带厂家推荐及选择指南
  • 2025年比较好的破碎机TOP实力厂家推荐榜
  • Day5表单-lable标签和按钮
  • IO出pin
  • 2025年诚信的万级净化工程厂家推荐及采购指南:定制定做公司
  • 2025年口碑好的博物馆定制展柜实力厂家TOP推荐榜
  • 详细介绍:MobileNet v1:轻量化卷积
  • 2025年质量好的不锈钢电力设备厂家实力及用户口碑排行榜
  • 如何实现服务器文件自动同步,从而提升数据管理效率?
  • 2025年知名的低速逆止器最新TOP厂家排名
  • laya spine事件
  • 2025年知名的玻璃釉电位器厂家最新权威推荐排行榜
  • 2025 年集成墙板厂家最新推荐榜,深度剖析企业技术实力与市场口碑集成墙板快装 / 集成墙板全屋 / 集成墙板装饰公司推荐
  • 2025年专业的拉力机厂家选购指南与推荐
  • [java 21 scopevalue(preview) 特定作用域数据共享 v01]
  • 2025年可靠的酒店瓷砖厂家推荐及选购参考榜
  • 2025年比较大的行政律师事务所律师费
  • 2025年比较好的铁罐厂家推荐及选择指南
  • outlook大附件怎么发送?主要有哪些有效的解决方案?
  • 2025 年生态木厂家最新推荐榜,技术实力与市场口碑深度解析的优质品牌方通 / 户外地板 / 装饰线条 / 隔断 / 背景墙公司推荐
  • 2025年综合性的智能运维数据中心展采购对接
  • 【2025-10-25】连岳摘抄