使用 ASP.Net 核心和身份进行 Web API 身份验证

时间:2021-03-14 07:08:20

标签: asp.net-core asp.net-web-api asp.net-identity

如何创建用于注册和登录用户的端点?我使用 Microsoft.AspNetCore.Identity 进行用户管理。

1 个答案:

答案 0 :(得分:0)

关于身份配置,可以参考这个document。关于注册和登录,和普通路由类似。所有方法都包含在 UserManager 和 SignInManager 中。

public class HomeController : Controller
{
    private readonly UserManager<IdentityUser> _userManager;
    private readonly SignInManager<IdentityUser> _signInManager;
    
    public HomeController(
        UserManager<IdentityUser> userManager,
        SignInManager<IdentityUser> signInManager
        )
    {
        
        _userManager = userManager;
        _signInManager = signInManager;
    }
    [HttpPost]
    public async Task<IActionResult> Register(string username, string password)
    {
        
        var user = new IdentityUser
        {
            UserName = username,
            Email = "",
        };
        
        var result = await _userManager.CreateAsync(user, password);
        _userManager.AddToRoleAsync(user, "amdin");
        if (result.Succeeded)
        {
            
            var signInResult = await _signInManager.PasswordSignInAsync(user, password, false, false);
            if (signInResult.Succeeded)
            {
                return View("index");
            }
        }

        return RedirectToAction("Index");
    }
   }

在这种情况下,客户端需要使用cookie容器来处理cookie,而jwt是一种更高效的处理api的方式。