下面是一个使用ASP.NET Core Identity的AuthController示例,包括登录和注册操作:
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
namespace YourNamespace.Controllers
{
[ApiController]
[Route("[controller]")]
public class AuthController : ControllerBase
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
public AuthController(UserManager userManager, SignInManager signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
[HttpPost("register")]
public async Task Register(RegisterViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
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("login")]
public async Task Login(LoginViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
return Ok();
}
return BadRequest("Invalid login attempt");
}
}
public class RegisterViewModel
{
public string Email { get; set; }
public string Password { get; set; }
}
public class LoginViewModel
{
public string Email { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
}
在上面的示例中,我们使用UserManager来管理用户,SignInManager用于用户的登录和登出操作。Register和Login方法分别处理注册和登录请求。
上一篇:ASP.NET Core Identity自定义IdentityRole在UserManager上引发异常
下一篇:ASP.NET Core Identity,如何覆盖IdentityRole名称唯一索引?我想根据租户存储重复的名称。