asp.net core Identity 用户管理 框架的配置

ASP.NET Core Identity是一个会员身份系统,早期它的名字是Membership,当然那是一段“古老”的历史,现在我们来了解全新的Identity。它允许我们创建、读取、更新和删除账户。支持账号验证、身份验证、授权、恢复密码和SMS双因子身份验证。它还支持微软、Facebook和Google等第三方登录提供商。它提供了一个丰富的API,并且这些API还可以进行大量的扩展。

Identity 支持跨数据库

下面开始 asp.net core 实战配置。所有代码 都是 使用 .net6 如有其他版本 笔者会 标明清楚

1.首先 创建 MyUser.cs 文件

using Microsoft.AspNetCore.Identity;

namespace aspnetcore013
{
    public class MyUser:IdentityUser<long>//long是主键的类型
    {
        //这里是 自定义的自增 字段 会创建到 数据库中 AspNetUsers表中
        public string? WeChat { get; set; }
    }
}

2. 创建 MyRole.cs 文件


using Microsoft.AspNetCore.Identity;

namespace aspnetcore013
{
    public class MyRole:IdentityRole<long>//long是主键的类型
    {

    }
}

3. 创建 MyDBcontext.cs 文件 这里要注意 IdentityDbContext<MyUser,MyRole,long> 设置相关联

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace aspnetcore013
{
    public class MyDBcontext:IdentityDbContext<MyUser,MyRole,long>
    {
        public MyDBcontext(DbContextOptions<MyDBcontext> options)
           : base(options)
        {
        }
    }
}

4. 在 Program.cs 中 如下 配置

builder.Services.AddDbContext<MyDBcontext>(opt =>
{
    opt.UseSqlServer("Data Source=ADMIN\\MSSQLSERVER2012A;Initial Catalog=demo10;User ID=sa;Password=123456");
});
builder.Services.AddDataProtection();
builder.Services.AddIdentityCore<MyUser>(opt =>
{
    //自定义的配置
    opt.Password.RequireDigit = false;
    opt.Password.RequiredLength = 6;
    opt.Password.RequireLowercase = false;
    opt.Password.RequireNonAlphanumeric = false;
    opt.Password.RequireUppercase = false;
    opt.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultEmailProvider;
    opt.Tokens.EmailConfirmationTokenProvider = TokenOptions.DefaultEmailProvider;
});
IdentityBuilder identityBuilder = new IdentityBuilder(typeof(MyUser),typeof(MyRole),builder.Services);
identityBuilder.AddEntityFrameworkStores<MyDBcontext>().AddDefaultTokenProviders()
    .AddUserManager<UserManager<MyUser>>().AddRoleManager<RoleManager<MyRole>>();

5.开始 做迁移 Add-migration 和 updade-database

使用的 nuget包 如下

Microsoft.AspNetCore.Identity.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core IdentityASP.NET Core 框架提供的一种身份认证和授权框架,它可以用于管理用户、角色和权限。 下面是使用 ASP.NET Core Identity 的步骤: 1. 首先,要在 ASP.NET Core 项目中安装 Microsoft.AspNetCore.Identity 包。 2. 接着,在 Startup.cs 文件中配置 Identity 服务。可以使用 AddIdentity() 方法来配置 Identity,默认情况下会将 Identity 存储在内存中,但这并不适合生产环境。因此,我们需要配置 Identity 存储提供程序。例如,可以使用 Entity Framework Core 来存储 Identity 数据。如果要使用 Entity Framework Core,可以使用 AddEntityFrameworkStores() 方法将 Identity 存储在数据库中。 ```csharp public void ConfigureServices(IServiceCollection services) { // 添加 Identity 服务 services.AddIdentity<IdentityUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // 添加其他服务 services.AddControllersWithViews(); } ``` 3. 然后,需要创建一个 ApplicationDbContext 类来表示 Identity 数据库上下文。这个类需要继承 IdentityDbContext 类,并指定 IdentityUser 和 IdentityRole 类型。 ```csharp public class ApplicationDbContext : IdentityDbContext<IdentityUser, IdentityRole, string> { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } } ``` 4. 在 ConfigureServices() 方法中,还需要配置身份认证和授权选项。例如,可以配置密码复杂性要求、登录尝试锁定、cookie 配置等等。 ```csharp public void ConfigureServices(IServiceCollection services) { // 添加 Identity 服务 services.AddIdentity<IdentityUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // 配置身份认证和授权选项 services.Configure<IdentityOptions>(options => { // 密码复杂性要求 options.Password.RequireDigit = true; options.Password.RequireLowercase = true; options.Password.RequireNonAlphanumeric = true; options.Password.RequireUppercase = true; options.Password.RequiredLength = 8; // 登录尝试锁定 options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); options.Lockout.MaxFailedAccessAttempts = 5; // cookie 配置 options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(7); options.Cookies.ApplicationCookie.LoginPath = "/Account/Login"; options.Cookies.ApplicationCookie.LogoutPath = "/Account/Logout"; }); // 添加其他服务 services.AddControllersWithViews(); } ``` 5. 最后,在应用程序中使用 Identity API 来管理用户、角色和权限。例如,可以在控制器中使用 UserManager 和 RoleManager 类来创建、删除和修改用户和角色。 ```csharp public class AccountController : Controller { private readonly UserManager<IdentityUser> _userManager; private readonly SignInManager<IdentityUser> _signInManager; private readonly RoleManager<IdentityRole> _roleManager; public AccountController(UserManager<IdentityUser> userManager, SignInManager<IdentityUser> signInManager, RoleManager<IdentityRole> roleManager) { _userManager = userManager; _signInManager = signInManager; _roleManager = roleManager; } public IActionResult Register() { return View(); } [HttpPost] public async Task<IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent: false); return RedirectToAction("Index", "Home"); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } return View(model); } public async Task<IActionResult> CreateRole() { var result = await _roleManager.CreateAsync(new IdentityRole("Admin")); if (result.Succeeded) { return Ok(); } return BadRequest(); } } ``` 以上就是使用 ASP.NET Core Identity管理用户和角色的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值