我刚刚开始学习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("~/");
}
}