Перенаправление на действие с заголовком авторизации - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть простой метод "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();
}
...