У меня есть простой метод "gate", который определяет, действителен ли токен пользователя jwt, а затем перенаправляет его на какое-то действие
У меня есть две конечные точки, требующие авторизации,
Один из них используется только для определения того, что токен в порядке (возвращает 401, если нет, или OK, если он есть)
Второй - защищенная область, для которой требуется действительный токен
Моя проблема в том, что первая конечная точка возвращает этот токен в порядке, а вторая возвращает 401
Из-за "Обходного пути", который возвращает вид вместо действия
Я понял, что забыл про заголовок авторизации, но
как добавить заголовки для перенаправления на действие?
Это важно для return redirect to action
вместо View, потому что в браузере View отображается старый URL, который в данном случае localhost/Gate
вместо localhost/Authorized
public async Task<IActionResult> Gate()
{
var token = ExtractToken();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
var get = client.GetAsync($"https://localhost:12345/TokenValidator").Result;
switch (get.StatusCode)
{
case HttpStatusCode.Unauthorized:
return RedirectToAction("Unauthorized");
case HttpStatusCode.OK:
return RedirectToAction("Authorized"); // it enters this case
default:
return RedirectToAction("Index");
}
}
[Route("TokenValidator")]
[Authorize]
public IActionResult TokenValidator()
{
return new OkObjectResult("OK");
}
[Route("Authorized")]
[Authorize]
public IActionResult Authorized()
{
return View();
}