要创建一个包含“ASP.NET Core 3.1 Identity”和Web API项目的解决方案,可以按照以下步骤进行操作:
Startup.cs
文件,并在ConfigureServices
方法中添加以下代码来配置Identity服务:services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
这段代码将Identity服务添加到DI容器中,并指定了使用IdentityUser
和IdentityRole
作为用户和角色实体。
6. 然后,在ConfigureServices
方法的底部,将以下代码添加到启用JWT身份验证支持:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
这段代码配置JWT身份验证,并使用配置文件中的值来设置验证参数。
7. 创建一个名为AccountController.cs
的新控制器,并添加以下代码:
[Route("api/[controller]")]
[ApiController]
public class AccountController : ControllerBase
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public AccountController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpPost]
[Route("register")]
public async Task Register(RegisterModel model)
{
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 Ok();
}
return BadRequest(result.Errors);
}
[HttpPost]
[Route("login")]
public async Task Login(LoginModel model)
{
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, lockoutOnFailure: false);
if (result.Succeeded)
{
return Ok();
}
return Unauthorized();
}
}
这段代码创建了一个名为AccountController
的控制器,并包含了注册和登录的API端点。
8. 创建一个名为RegisterModel.cs
的新模型,并添加以下代码:
public class RegisterModel
{
public string Email { get; set; }
public string Password { get; set; }
}
这个模型将用于接收注册API的请求。
9. 创建一个名为LoginModel.cs
的新模型,并添加以下代码:
public class LoginModel
{
public string Email { get; set; }
public string Password { get; set; }
}
这个模型将用于接收登录API的请求。
10. 在appsettings.json
文件中,添加以下配置来配置JWT身份验证:
{
"Jwt": {
"Key": "YourSecretKey",
"Issuer": "YourIssuer",
"Audience": "YourAudience"
}
}
确保将"YourSecretKey"替换为您自己的密钥,并将"YourIssuer"和"YourAudience"替换为您自己的发行者和受众。 11. 运行项目,并使用Postman或其他API测试工具来测试注册和登录API。
这样,您就创建了一个包含“ASP.NET Core 3.1 Identity”和Web API项目的
上一篇:Asp.Net Core 3.1 Identity LinqToDB.Identity UserStore 问题
下一篇:ASP.NET Core 3.1 InvalidOperationException: 在上一个操作完成之前,对此上下文启动了第二个操作。