Я только начал изучать 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
. Это работает так?
Angular
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("~/");
}
}