ASP.NET Core MVC 从入门到精通之Identity入门 世界消息
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。
(相关资料图)
经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启动运行,以及命名约定,创建控制器,视图,模型,接收参数,传递数据ViewData,ViewBag,路由,页面布局,wwwroot和客户端库,Razor语法,EnityFrameworkCore与数据库,HttpContext,Request,Response,Session,序列化,文件上传,自动映射,Html辅助标签,模型校验,鉴权、授权基础等内容,今天继续讲解ASP.NET Core MVC 中等Identity入门相关内容,仅供学习分享使用。
什么是Identity?
ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的身份认证系统,包括用户数据,用户身份以及注册登录信息数据存储,可以让您的应用拥有登录功能以及持续化存储登录用户相关数据。
ASP.NET Core Identity:
一个 API,它支持用户界面 (UI) 登录功能。
管理用户、密码、配置文件数据、角色、声明、令牌、电子邮件确认等等。
用户可使用存储在 Identity 中的登录信息创建帐户,或者可使用外部登录提供程序。支持的外部登录提供程序包括 Facebook、Google、Microsoft 帐户和 Twitter。
Identity 通常使用 SQL Server 数据库进行配置,以存储用户名、密码和配置文件数据。或者,可使用其他持久性存储,例如 Azure 表存储。
在本主题中,你将学习Identity的注册,登录,登出等相关应用。
Identity应用步骤
1. 通过模板创建项目
选择模板【ASP.NET Core Web应用(模型-视图-控制器)】,然后点击下一步
打开配置新项目页面,输入【项目名称】,然后点击下一步
在其他信息页面,选择框架【.NET 6.0(长期支持)】,身份验证类型,选择【个人账户】,然后点击【创建】,如下所示:
生成的项目将ASP.NET Core Identity作为Razor类库提供。 IdentityRazor 类库公开具有Identity
区域的终结点。
2. 创建数据库
在数据库管理器中,创建空数据库,如下所示:
3. 修改数据库连接字符串
在创建好后的项目中,打开项目配置文件【appsettings.json】,修改默认数据库连字符串,如下所示:
4. 数据库更新迁移
通过VisualStudio打开程序包管理器控制台
,输入以下命令【Update-Database】,进行数据库迁移,如下所示:
待执行数据迁移成功后,打开刚刚创建的数据库,发现多出了几个表,如下所示:
如此,则表示迁移成功。
之所以能够迁移成功,是因为模板在创建项目时,已经为我们创建了初始化脚本,如下所示:
5. 配置Identity服务
根据官方文档,注入Identity相关服务,如下所示:
1 using DemoCoreIdentity.Data; 2 using Microsoft.AspNetCore.Identity; 3 using Microsoft.EntityFrameworkCore; 4 5 var builder = WebApplication.CreateBuilder(args); 6 7 // Add services to the container. 8 var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); 9 builder.Services.AddDbContext(options =>10 options.UseSqlServer(connectionString));11 builder.Services.AddDatabaseDeveloperPageExceptionFilter();12 13 #region Identity14 15 builder.Services.AddDefaultIdentity (options => options.SignIn.RequireConfirmedAccount = true)16 .AddEntityFrameworkStores ();17 builder.Services.AddControllersWithViews();18 19 builder.Services.Configure (options =>20 {21 // Password settings.22 options.Password.RequireDigit = true;23 options.Password.RequireLowercase = true;24 options.Password.RequireNonAlphanumeric = true;25 options.Password.RequireUppercase = true;26 options.Password.RequiredLength = 6;27 options.Password.RequiredUniqueChars = 1;28 29 // Lockout settings.30 options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);31 options.Lockout.MaxFailedAccessAttempts = 5;32 options.Lockout.AllowedForNewUsers = true;33 34 // User settings.35 options.User.AllowedUserNameCharacters =36 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";37 options.User.RequireUniqueEmail = false;38 });39 40 builder.Services.ConfigureApplicationCookie(options =>41 {42 // Cookie settings43 options.Cookie.HttpOnly = true;44 options.ExpireTimeSpan = TimeSpan.FromMinutes(5);45 46 options.LoginPath = "/Identity/Account/Login";47 options.AccessDeniedPath = "/Identity/Account/AccessDenied";48 options.SlidingExpiration = true;49 });50 51 #endregion52 53 var app = builder.Build();54 55 // Configure the HTTP request pipeline.56 if (app.Environment.IsDevelopment())57 {58 app.UseMigrationsEndPoint();59 }60 else61 {62 app.UseExceptionHandler("/Home/Error");63 // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.64 app.UseHsts();65 }66 67 app.UseHttpsRedirection();68 app.UseStaticFiles();69 70 app.UseRouting();71 72 app.UseAuthentication();73 app.UseAuthorization();74 75 app.MapControllerRoute(76 name: "default",77 pattern: "{controller=Home}/{action=Index}/{id?}");78 app.MapRazorPages();79 80 app.Run();
上述代码用默认选项值来配置 Identity。 可通过依赖关系注入向应用提供服务。通过调用UseAuthentication启用 Identity。UseAuthentication
向请求管道添加身份验证中间件。
Identity测试
运行程序,默认打开Home/Index页面
1. 注册用户
点击注册链接,打开注册窗口,输入用户名,密码,点击注册按钮,如下所示:
注意,如下注册校验不通过,会有错误信息提示,如下所示:
2. 登录
注册成功后,点击登录链接,即可打开登录窗口,如下所示:
登录成功后,显示如下所示
3. 登出
点击Logout链接,可以登出,重新返回Home/Index首页,并显示未登录状态。如下所示:
身份验证
通过模板创建的项目,默认情况下,Home/Index是没有身份验证的,可以在HomeController增加Authorize特性,增加身份验证,如下所示:
1 using DemoCoreIdentity.Models; 2 using Microsoft.AspNetCore.Authorization; 3 using Microsoft.AspNetCore.Mvc; 4 using System.Diagnostics; 5 6 namespace DemoCoreIdentity.Controllers 7 { 8 [Authorize] 9 public class HomeController : Controller10 {11 private readonly ILogger_logger;12 13 public HomeController(ILogger logger)14 {15 _logger = logger;16 }17 18 public IActionResult Index()19 {20 return View();21 }22 23 public IActionResult Privacy()24 {25 return View();26 }27 28 [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]29 public IActionResult Error()30 {31 return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });32 }33 }34 }
注意,如果要对某一个action增加验证,则可以将Authorize特性添加在action上,进行更详细的身份验证。
添加成功后,再次运行程序打开Home/Index时,则会自动跳转到登录页面,如下所示:
以上就是ASP.NET Core MVC使用Identity进行身份验证的全部内容。
上一篇:热点在线丨乌干达一学校遭反政府武装袭击造成数十人死亡
下一篇:最后一页
ASP.NET Core MVC 从入门到精通之Identity入门 世界消息
经过前几篇文章的讲解,初步了解ASP NETCoreMVC项目创建,启动运行,以
2023-06-17热点在线丨乌干达一学校遭反政府武装袭击造成数十人死亡
新华社基加利6月17日电(记者吉莉)坎帕拉消息:乌干达反政府武装“民
2023-06-17克洛伊维弗瑞|焦点关注
1、她的电影有TheBestofBosomBuddies2、BosomBuddies、UltimateSusieWilden等等。2、
2023-06-17公积金额度调整_公积金额度_天天消息
1、公积金贷款有两种:一人申请住房公积金贷款,最高额度40万元;和配
2023-06-17喝酒脸红是能喝还是不能喝呢
关于喝酒脸红是能喝还是不能喝呢的内容,包含一喝酒就脸红的人,是能喝
2023-06-17枸杞山药蛋煲瘦肉_关于枸杞山药蛋煲瘦肉概略 世界热点评
1、枸杞山药蛋煲瘦肉是一道由山药和猪肉为主要材料做成的菜品,属于家
2023-06-17终于匹配ESC系统,价格上调0.1万元,五菱缤果新增车型来袭|世界时讯
作为一款现象级作品,宏光MINIEV采用低价策略取代了老年代步车的市场地
2023-06-17全网1亿+网友围观 京东京造联合什么值得买打造618超“值”购物体验
「618京东京造超值的」主题活动打造了职场、居家、生活仪式感三大场景
2023-06-17显存是什么 显存位宽与显存带宽介绍 显存位宽和带宽是什么意思 播资讯
显存是什么显存,也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或
2023-06-17天门学校都有哪些市个最好最好的是个
1、天门学校都有哪些全称:天门市江汉学校天门市江汉学校创办于2006年
2023-06-17X 关闭
X 关闭