Я столкнулся с проблемой аутентификации в своем приложении ASP.NET Core MVC с использованием удостоверений и файлов cookie. Несмотря на успешный вход в систему с использованием _signInManager.PasswordSignInAsync, User.Identity.IsAuthenticated возвращает false. Я проверил свой код и настройки, но не смог определить основную причину.
public async Task<IActionResult> Login(SignInCommand model)
{
var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, false, false);
//return result;
// Access the current user's information
if (result.Succeeded)
{
var isAuthenticated = User.Identity.IsAuthenticated;
var currentUser = HttpContext.User;
var userId = currentUser.FindFirst(ClaimTypes.NameIdentifier)?.Value;
var userName = currentUser.Identity?.Name;
return RedirectToAction("Index", "Home");
}
return View("Login", model);
}
Моя программа.cs https://gist.github.com/otmanik/4e41b7c6bef023d6d0081026e10eedf1
Спасибо





В этот конкретный момент времени значение false является правильным, поскольку ваш User не аутентифицирован (хотя они аутентифицируются). Они аутентифицированы/не были аутентифицированы на момент доступа к методу Login.
Попробуйте другую конечную точку (метод), которая требует аутентификации User, и проверьте значение оттуда. Предполагая успешную аутентификацию, значение
var isAuthenticated = User.Identity.IsAuthenticated;
Должно быть true.
Это должно быть решено добавлением AddAuthentication перед AddIdentity: Я переместил builder.Services.AddAuthentication(options => .. до builder.Services.AddIdentity<ApplicationUser, IdentityRole>();