尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

C# Web开发教程(九)标识框架[Identity]
📅 发布时间:2026/6/20 23:43:25

标识(Identity)框架

  • Authentication和Authorization
- 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

数据库

相关新闻

  • 2025NFC与电子标签推荐榜:深圳中签科技领跑,NFC 标签/芯片/卡、电子芯片/标签高效应用方案精选
  • 2025年有实力冷拔丝优质厂家推荐榜单
  • 2025-10-27 在浏览器打开网站A输入数字后变成小动物,其他网站为正常数字输入 ==》 修改字体

最新新闻

  • 挑小户型功能沙发和全屋软体家具,分享我对比过的靠谱品牌 - 深圳市民HLL
  • DAPI共识算法在微电网多级储能协调控制中的应用与实践
  • 构建韧性信息物理系统:从安全验证到状态估计与协同恢复
  • 【Springboot毕设全套源码+文档】基于Java+springboot个人资产在线安全管理平台设计与实现(丰富项目+远程调试+讲解+定制)
  • 小户型功能沙发选哪家靠谱?2026最新排行榜我整理好了 - 深圳市民HLL
  • 2026常州防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号