Я создал веб-API веб-приложения ASP.NET с отдельными учетными записями пользователей вместе с базовым веб-приложением ASP.NET MVC.
Приложение веб-API имеет контроллер учетных записей со всем необходимым встроенным кодом. для регистрации пользователей и получения токенов доступа.
Веб-приложение содержит действие для вызова веб-API и получения токена доступа для пользователя, пытающегося войти в систему.
Когда пользователь вводит свою электронную почту ипароль, действие вызывается успешно и возвращается ответное сообщение. На этом этапе User.Identity.IsAuthenticated по-прежнему имеет значение false, когда оно должно быть истинным.
Что я делаю неправильно или что еще мне нужно сделать, чтобы сделать User.Identity.IsAuthenticated истинным послеполучить токен?
/// <summary>
/// Action is used to authenticate the user and get an access token
/// </summary>
/// <param name="email">The given email address</param>
/// <param name="password">The given password</param>
/// <returns></returns>
public async Task<IActionResult> Authenticate(string email, string password)
{
if (ModelState.IsValid)
{
var data = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("username", email),
new KeyValuePair<string, string>("password", password)
});
using (HttpResponseMessage responseMessage = await _httpClient.PostAsync("/Token", data))
{
if (responseMessage.IsSuccessStatusCode)
{
bool i = User.Identity.IsAuthenticated; // this is always false! WHY?
/*
* DO MORE STUFF AFTERWARDS.
*/
}
else
throw new Exception(responseMessage.ReasonPhrase);
}
return RedirectToAction("Index", "Home");
}
else
{
return View();
}
}