如何正确使用asp.net Core内置身份进行身份验证?

时间:2020-04-15 06:13:48

标签: angular asp.net-core angular8 angular-httpclient

我刚刚开始学习Angular,并在项目中使用Angular 8。当我使用debugger进行调试时,可以看到用户名和密码正确到达那里。但是,它不会通过使用login controller进入return this.http.post<any>(API_USERS_URL, { username, password});。那是一个问题。

另一个问题是,此login web api controller是从内置标识复制并粘贴的。由于我使用相同的Signin Manager and User Manager,因此我认为可以通过创建自己的Login Controller将其用于身份验证。这样行吗?

角度

     const API_USERS_URL = 'api/users';
    login(username: string, password: string): Observable<User> {
        debugger;
        return this.http.post<any>(API_USERS_URL, { username, password});
    }


身份验证

[HttpPost]
        [Route("api/users")]
        public async Task<IActionResult> Authenticate(string userName, string password)
        {

            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(userName, password, false, lockoutOnFailure: false);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User logged in.");

                }
                //if (result.RequiresTwoFactor)
                //{
                //    //return RedirectToPage("./LoginWith2fa", new { , RememberMe = Input.RememberMe });
                //}
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return RedirectToPage("./Lockout");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return RedirectToPage("~/");
                }
            }

            // If we got this far, something failed, redisplay form
            return RedirectToPage("~/");
        }

    }

0 个答案:

没有答案