我对 Asp.NET 很陌生,想了解更多关于如何进行的信息。我有一个包含标准天气模板的标准 WebAPI 项目 - 我正在尝试通过注册/登录应用一些身份验证。我知道有一种方法可以让模板在创建项目时为您完成,但对于 web api,它不允许您执行我想要的本地数据库。
所以现在我已经附加了 Identity.UI 包,让我可以访问此方法并为标识表生成迁移
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
这允许我使用用户管理器注册用户并登录,我这样做:
if (!ModelState.IsValid) return BadRequest();
var result = await m_userManager.FindByNameAsync(user.Email);
var correct = await m_userManager.CheckPasswordAsync(result, user.Password);
if (!correct) return BadRequest();
return Ok(new { token = m_tokenService.BuildToken(user.Email) });
我的问题是处理通过 WebAPI 注册和登录的正确方法,因为顾名思义Microsoft.AspNetCore.Identity.UI 包提供了用于登录/注册的剃刀页面,我并不真正需要,这让我相信这是不正确的。这样做是否有缺点/问题,或者这是一种更干净的方法。
默认的Microsoft.AspNetCore.Identity.UI包提供了一个用于登录/注册的剃刀页面,这对于Web api来说似乎是多余的。
为了在Web api上实现Microsoft身份来处理基本的个人用户帐户,你可以尝试使用JWT令牌,请参阅以下链接,这些链接是关于在 ASP.NET 核心API项目中使用JwtBearer身份验证的好教程:
https://wildermuth.com/2018/04/10/Using-JwtBearer-Authentication-in-an-API-only-ASP-NET-Core-Project
https://dotnetdetail.net/asp-net-core-3-0-web-api-token-based-authentication-example-using-jwt-in-vs2019/