上两篇(asp.net core 3.x 身份验证-1涉及到的概念、asp.net core 3.x 身份验证-2启动阶段的配置)介绍了身份验证相关概念以及启动阶段的配置,本篇以cookie身份验证为例来大致说明asp.net core中的身份验证原理。如果我们的应用只考虑浏览器使用,且不考虑前后端分离,cookie是最简单的身份验证方式。虽然这样命名,但我们的用户标识并非一定要存到cookie里,asp.net core允许我们存储到任何地方,如:session、自定义基于内存的存储、redis等等。身份验证与asp.net core Identity结合会更简单,它提供了用户管理功能,以及更身份验证相关的辅助类,如:SignManager,不过暂时不将这东东。
还是以宏观上的理解和使用为主。主要涉及如下流程:
未登录时请求受保护的资源
登录
已登录时访问受保护的资源
注销
其中步骤1、3差别很小。总体流程大致如下图:
先在Startup中做如下配置:
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddAuthentication().AddCookie(); 4 services.AddControllersWithViews(); 5 } 6 7 // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 8 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 9 { 10 if (env.IsDevelopment()) 11 { 12 app.UseDeveloperExceptionPage(); 13 } 14 else 15 { 16 app.UseExceptionHandler("/Home/Error"); 17 } 18 app.UseStaticFiles(); 19 20 app.UseRouting(); 21 app.UseAuthentication(); 22 app.UseAuthorization(); 23 24 app.UseEndpoints(endpoints => 25 { 26 endpoints.MapControllerRoute( 27 name: "default", 28 pattern: "{controller=Home}/{action=Index}/{id?}"); 29 }); 30 }