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

门户网站做等级保护测评定制图片软件

门户网站做等级保护测评,定制图片软件,网页美工设计学习,批量替换wordpress页面文字文章目录 前言一、核心功能二、核心组件三、使用1)创建项目2)安装必要 NuGet包3)配置数据库连接字符串4)用户与角色实体定义4)配置数据库上下文5) 注册服务6)数据库迁移与初始化7)用…

文章目录

  • 前言
  • 一、核心功能
  • 二、核心组件
  • 三、使用
    • 1)创建项目
    • 2)安装必要 NuGet包
    • 3)配置数据库连接字符串
    • 4)用户与角色实体定义
    • 4)配置数据库上下文
    • 5) 注册服务
    • 6)数据库迁移与初始化
    • 7)用户管理功能实现
    • 8)认证与授权配置
  • 四、常见问题与调试
  • 总结


前言

ASP.NET Core Identity 是一个用于管理用户身份验证、授权和用户信息的框架,它是 ASP.NET Core 平台的重要组成部分。它为开发者提供了一套完整的工具和 API,用于处理用户注册、登录、密码管理、角色权限、第三方登录(如 Google、Facebook)等常见功能。

一、核心功能

  • 用户管理
    支持创建、更新、删除用户,管理用户信息(用户名、邮箱、密码等)。

  • 身份验证(Authentication)
    验证用户身份(如登录),支持 Cookie 认证、JWT(用于 API)、OAuth 2.0、OpenID Connect 等。

  • 授权(Authorization)
    基于角色(Role-Based)或策略(Policy-Based)控制资源访问权限。

  • 密码安全
    内置密码哈希、密码复杂度策略、账户锁定(防暴力破解)等功能。

  • 多因素认证(2FA)
    支持短信、邮件、验证器应用(如 Google Authenticator)等二次验证方式。

  • 外部登录集成
    快速集成第三方登录(如 Google、Facebook、Microsoft、GitHub 等)。

  • 用户声明(Claims)
    支持基于声明的授权模型,灵活定义用户属性。

  • 角色和权限管理
    创建角色并为用户分配角色,实现基于角色的访问控制。

二、核心组件

  • UserManager<TUser>
    管理用户(创建、删除、查找、修改密码等),泛型 TUser 通常是 IdentityUser 或其子类。

  • SignInManager<TUser>
    处理用户登录、登出、外部登录等操作。

  • RoleManager<TRole>
    管理角色(创建、删除、分配权限等),TRole 默认为 IdentityRole

  • IdentityUser 和 IdentityRole
    内置的用户和角色模型,可扩展自定义字段。

  • Entity Framework Core 集成
    默认使用 EF Core 存储用户和角色数据,支持 SQL Server、SQLite、PostgreSQL 等数据库。

三、使用

1)创建项目

  1. 使用 Visual Studio 创建 ASP.NET Core Web API 项目

2)安装必要 NuGet包

  1. 核心依赖包括 IdentityEF Core 的集成包:
    Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore
    Install-Package Microsoft.EntityFrameworkCore.SqlServer
    Install-Package Microsoft.EntityFrameworkCore.Tools
    

3)配置数据库连接字符串

  1. appsettings.json 中添加数据库连接配置:
     "ConnectionStrings": {"DefaultConnection": "Server=XXX;Database=XXX;User Id=sa;Password=XXX;TrustServerCertificate=True;Trusted_Connection=True;MultipleActiveResultSets=True"}
    

4)用户与角色实体定义

  1. 自定义用户类
    继承 IdentityUser 并扩展属性(如创建时间):
    using Microsoft.AspNetCore.Identity;namespace IdentityProject.Entity
    {public class ApplicationUser:IdentityUser<long>{public DateTime CreateTime { get; set; }}
    }	
    
  2. 自定义角色类
    继承 IdentityRole(主键类型需与用户类一致):
    using Microsoft.AspNetCore.Identity;namespace IdentityProject.Entity
    {public class ApplicationRole:IdentityRole<long>{}
    }
    

4)配置数据库上下文

  1. 创建 DbContext
    继承 IdentityDbContext 并指定用户、角色类型:
    using IdentityProject.Entity;
    using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore;namespace IdentityProject.Data
    {public class MyDbContext : IdentityDbContext<ApplicationUser,ApplicationRole,long>{public MyDbContext(DbContextOptions<MyDbContext> options) : base(options){}}
    }
    
  2. 创建MyDbContextDesignTimeFactory.cs
    using Microsoft.EntityFrameworkCore;
    using Microsoft.EntityFrameworkCore.Design;namespace IdentityProject.Data
    {public class MyDbContextDesignTimeFactory : IDesignTimeDbContextFactory<MyDbContext>{public MyDbContext CreateDbContext(string[] args){DbContextOptionsBuilder<MyDbContext> builder=  new DbContextOptionsBuilder<MyDbContext>();builder.UseSqlServer("Server=XXX;Database=XXX;User Id=sa;Password=XXX;TrustServerCertificate=True;Trusted_Connection=True;MultipleActiveResultSets=True");return new MyDbContext(builder.Options);}}
    }
    

5) 注册服务

  1. Program.cs 中配置 Identity数据库服务
    var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");builder.Services.AddDbContext<MyDbContext>(opt => {opt.UseSqlServer(connectionString);});builder.Services.AddIdentityCore<ApplicationUser>(opt => {opt.Lockout.MaxFailedAccessAttempts = 5;//登录失败多少次账号被锁定opt.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(1);//锁定多长时间opt.Password.RequireDigit = false;//密码是否需要数字    opt.Password.RequireLowercase = false;//密码是否需要小写字符opt.Password.RequireUppercase = false;//密码是否需要大写字符opt.Password.RequireNonAlphanumeric = false;//密码是否需要非字母数字的字符opt.Password.RequiredLength = 6;//密码长度opt.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultEmailProvider;//密码重置令牌,使用默认的邮箱令牌提供程序来生成和验证令牌。此提供程序通常与用户邮箱关联,生成的令牌会通过邮件发送给用户,保证用户通过邮件接收密码重置链接。opt.Tokens.EmailConfirmationTokenProvider = TokenOptions.DefaultEmailProvider;//配置邮箱确认令牌(Email Confirmation Token)的生成和验证所使用的提供程序(Provider)var idBuilder = new IdentityBuilder(typeof(ApplicationUser), typeof(ApplicationRole), builder.Services);idBuilder.AddEntityFrameworkStores<MyDbContext>().AddDefaultTokenProviders().AddUserManager<UserManager<ApplicationUser>>().AddRoleManager<RoleManager<ApplicationRole>>();
    

6)数据库迁移与初始化

  1. 生成迁移文件
    执行 EF Core 命令创建迁移:

    Add-Migration Init
    
  2. 更新数据库
    应用迁移以生成 Identity 相关表:

    Update-Database
    

7)用户管理功能实现

  1. 创建角色、用户注册、角色分配、用户登录
    使用 UserManager 创建用户:
    using IdentityProject.Entity;
    using Microsoft.AspNetCore.Identity;
    using Microsoft.AspNetCore.Mvc;namespace IdentityProject.Controllers
    {[Route("api/[controller]/[action]")][ApiController]public class TestController : ControllerBase{private readonly UserManager<ApplicationUser> _userManager;private readonly RoleManager<ApplicationRole> _roleManager;private readonly IWebHostEnvironment _webHostEnvironment;public TestController(UserManager<ApplicationUser> userManager, RoleManager<ApplicationRole> roleManager, IWebHostEnvironment webHostEnvironment){_userManager = userManager;_roleManager = roleManager;_webHostEnvironment = webHostEnvironment;}[HttpPost]public async Task<ActionResult<string>> Test(){if (!await _roleManager.RoleExistsAsync("admin")){ApplicationRole role=new ApplicationRole { Name = "admin" };//创建角色var res=await _roleManager.CreateAsync(role);if (!res.Succeeded) return BadRequest("CreateRoleAsync Failed");}ApplicationUser user=await _userManager.FindByNameAsync("LGF");if (user == null){user = new ApplicationUser { UserName="LGF"};//创建用户var res=await _userManager.CreateAsync(user, "123456");if (!res.Succeeded){return BadRequest("CreateUserAsync Failed");}}var inRole=await _userManager.IsInRoleAsync(user, "admin");if (!inRole){//分配角色var res=await _userManager.AddToRoleAsync(user, "admin");if (!res.Succeeded) return BadRequest("UserManager AddToRoleAsync Failed");}return "Success";}/// <summary>/// 登录/// </summary>/// <param name="request"></param>/// <returns></returns>[HttpPost]public async Task<ActionResult> Login(CheckPwdRequest request){string userName=request.UserName;string password=request.Password;var user = await _userManager.FindByNameAsync(userName);if (user == null){if (_webHostEnvironment.IsDevelopment()){return BadRequest("用户不存在");}return BadRequest();}bool locked = await _userManager.IsLockedOutAsync(user);if (locked){return BadRequest($"用户被锁定,锁定结束时间为:{user.LockoutEnd}");}bool validatePwd = await _userManager.CheckPasswordAsync(user, password);if (validatePwd){await _userManager.ResetAccessFailedCountAsync(user);return Ok("登录成功");}else{await _userManager.AccessFailedAsync(user);return BadRequest($"{userName} Login Failed ,Password is wrong");}}}
    }
    

8)认证与授权配置

  1. 启用中间件
    在请求管道中添加认证与授权中间件(顺序不可颠倒):
    app.UseAuthentication();
    app.UseAuthorization();
    
  2. 控制器授权
    使用 [Authorize] 属性限制访问:
    [Authorize(Roles = "admin")]
    [ApiController]
    public class AdminController : ControllerBase { }
    
  3. 策略授权
    自定义策略(如年龄限制):
    services.AddAuthorization(options =>
    {options.AddPolicy("AdultOnly", policy => policy.RequireClaim("Age", "18"));
    });
    

四、常见问题与调试

  • 迁移错误:检查 DbContext 是否继承自 IdentityDbContext,确保连接字符串正确。

  • 中间件顺序UseAuthentication 必须在 UseAuthorization 之前。

  • 密码策略冲突:通过 IdentityOptions 调整复杂度要求。


总结

基于 ASP.NET Core IdentityWeb API 身份系统,支持用户管理、角色授权及扩展功能。


文章转载自:

http://1U0YRD9u.pypbz.cn
http://6eDnoFSa.pypbz.cn
http://FsuRR8jv.pypbz.cn
http://7YsFq4Sw.pypbz.cn
http://gyfPd7B7.pypbz.cn
http://mfz8QcYK.pypbz.cn
http://9dm2vywA.pypbz.cn
http://rd8wWYyE.pypbz.cn
http://yeSEg0ix.pypbz.cn
http://tWKq9qHl.pypbz.cn
http://7NkdrKW0.pypbz.cn
http://IZvV9G7H.pypbz.cn
http://gYhFYuri.pypbz.cn
http://wASkg7N1.pypbz.cn
http://WoBXvqDY.pypbz.cn
http://2ELYzN3j.pypbz.cn
http://36b8ibkF.pypbz.cn
http://8SGqNB9I.pypbz.cn
http://YtvYqhPb.pypbz.cn
http://Kr6VlHX1.pypbz.cn
http://K362wHaa.pypbz.cn
http://ei4KLYYQ.pypbz.cn
http://1mvbnE1C.pypbz.cn
http://eClrkDnv.pypbz.cn
http://dNR7SWha.pypbz.cn
http://nh3QheYy.pypbz.cn
http://YYcs8TlI.pypbz.cn
http://UbOIJ0W8.pypbz.cn
http://fqQrAmHT.pypbz.cn
http://U4nEvNEh.pypbz.cn
http://www.dtcms.com/wzjs/768227.html

相关文章:

  • 开发网站建设方案微信公众号app下载安装
  • 个人网站推广 公司做调查问卷权威网站
  • 做推广赚钱的网站有哪些做网站 怎么选择公司
  • 做视频招标的网站有哪些创办网站需要什么
  • 网站建设公司的客户ppt要怎么做网站
  • 网站建设与管理任务分工网站开发人员招聘
  • 做柜子网站做一个卖货的app要多少钱
  • 网业公司宁波seo外包服务平台
  • 百度网站权重排名30天网站建设全程实录
  • 美食网站html代码网站 免费 认证
  • 高端设计网站最好的网站制作公司
  • php网站开发框架搭建wordpress会计模板下载
  • 网站开发维护承担的法律责任网络工程师证书含金量
  • 图书网站建设实训总结上海企业服务云app
  • 网站运营如何做学历提升入口
  • 浦口建设局网站广州网站建设兼职
  • 网站制作好在百度里可以搜到吗西宁百姓网
  • 播州区建设局网站wordpress订单查询
  • 网站安全防护网页制作登录界面代码
  • 如何制作课程网站模板下载地址信誉好的营销单页网站
  • 网站建设销售需要懂的知识cms是什么材料
  • 深圳 网站建设vs做网站头部的代码
  • 自带浏览器建设银行网站打不开青岛网站关键词排名优化
  • 乐清品牌网站建设网络免费推广平台
  • 长沙营销网站设计wordpress cdn 非插件
  • 公司网站建设说明书wordpress阅读全文
  • 如何让单位网站做防护wordpress怎样比较安全
  • 学校的网站怎么做的好如何进入wordpress前台
  • 杭州 网站制作百度网站验证怎么做
  • 监控企业网站模板东莞网上推广