ASP.NET Core Identity 实现用户认证

在本文中,将探讨如何使用ASP.NET Core Identity实现用户认证功能。这包括设置Web项目、身份数据库、用户注册、登录、登出以及支持JWTToken和OAuth 2.0认证。

准备服务和中间件

首先,需要在ConfigureServices方法中添加MVC,以便在应用程序中使用。

Startup类中的Configure方法用于配置应用程序的中间件。当前代码直接写入"Hello World"响应。将移除它并添加MVC,以处理请求。

public void ConfigureServices(IServiceCollection services) { services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseAuthentication(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }

以上代码展示了如何配置服务和中间件以支持MVC和身份认证。

准备视图模型

接下来,将创建两个视图模型,用于注册和登录页面。

public class LoginViewModel { // 登录视图模型属性 } public class RegisterViewModel { // 注册视图模型属性 }

视图模型用于在视图和控制器之间传递数据。

准备控制器

将创建两个控制器:AccountControllerHomeController

[Authorize] public class HomeController : Controller { public IActionResult Index() { return View(); } } [Authorize] public class AccountController : Controller { private readonly UserManager _userManager; private readonly SignInManager _signInManager; public AccountController(UserManager userManager, SignInManager signInManager) { _userManager = userManager; _signInManager = signInManager; } [HttpGet] [AllowAnonymous] public async Task Login(string returnUrl = null) { } [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Login(LoginViewModel model, string returnUrl = null) { } [HttpPost] [ValidateAntiForgeryToken] public async Task Logout() { } [HttpGet] [AllowAnonymous] public IActionResult Register(string returnUrl = null) { } [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Register(RegisterViewModel model, string returnUrl = null) { } }

控制器负责处理用户的注册、登录和登出请求。

准备视图

视图位于Views文件夹中。这些视图是标准的MVC视图,不会过多解释。

如果运行应用程序,它将转到登录页面,因为没有用户登录。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485