当前位置: 首页 > 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.rkmt.cn/news/31442.html

相关文章:

  • 2025NFC与电子标签推荐榜:深圳中签科技领跑,NFC 标签/芯片/卡、电子芯片/标签高效应用方案精选
  • 2025年有实力冷拔丝优质厂家推荐榜单
  • 2025-10-27 在浏览器打开网站A输入数字后变成小动物,其他网站为正常数字输入 ==》 修改字体
  • 2025年比较好的破碎机TOP实力厂家推荐榜
  • IO出pin
  • 2025年诚信的万级净化工程厂家推荐及采购指南:定制定做公司
  • 2025年质量好的不锈钢电力设备厂家实力及用户口碑排行榜
  • 2025年知名的低速逆止器最新TOP厂家排名
  • laya spine事件
  • 2025 年集成墙板厂家最新推荐榜,深度剖析企业技术实力与市场口碑集成墙板快装 / 集成墙板全屋 / 集成墙板装饰公司推荐
  • 国产化Excel开发组件Spire.XLS教程:使用Python将CSV转换为XML(处理现实数据问题)
  • 2025 年洗碗机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析酒店 / 学校 / 工厂 / 全自动洗碗机公司推荐
  • 文档处理控件Aspose.Words教程:Python将Markdown转换为Word
  • 2025年10月北京写字楼装修公司推荐榜:筑垒领衔五强对比
  • 苏联复变函数论专家和教育家Б. В. 沙巴特
  • 2025年蕾蒂蔻品牌深度解析:渐进式自然美学下的科研质控全景
  • 指针的用法,函数,结构体,以及部分解释
  • 2025年蕾蒂蔻产品深度解析:械字号轻医美供应链安全全景拆解
  • 2025年10月绩效管理咨询公司推荐:实力榜对比评价
  • 告别 “专业壁垒”:MyEMS 如何让一线操作工也能看懂能耗、发现浪费?
  • 打破 “封闭垄断”:MyEMS 开源生态如何有效控制企业能源管理成本
  • 2025年10月北京商业工装设计公司推荐榜:五强对比评测
  • 0282-KVS-使用 anyhow 处理错误
  • 2025年口碑好的搜荐系统公司、2025年搜荐系统服务商、专业的搜荐系统平台、搜荐系统公司推荐、搜荐系统服务口碑推荐全面解析
  • Playwright for Python 的基本使用与常用交互API-使用笔记
  • 5款能帮你自动做PPT的AI工具,我全都试过了,最好用的是它!
  • 大模型训练
  • 2025 年无缝钢管厂家最新推荐榜,技术实力与市场口碑深度解析Q355E/20G/12Cr1MoVG/15CrMoG/20CrMnTi/16MnDG 无缝钢管公司推荐
  • 2025年北京离婚房产律所权威推荐榜单:婚姻/离婚/离婚事务所专业律师团队精选
  • 魔改最短路