Я бы хотел определить, является ли токен JWT действительным в [AllowAnonymouse]]
конечной точке
редактировать
У меня есть конечная точка, к которой может обратиться любой (авторизованные и неавторизованные пользователи), а затем: Если у этого пользователя есть заголовок авторизации http ИЛИ он имеет токен в файлах cookie и его токен действителен, то перенаправьте его на X в противном случае на Y
Псевдокод моей идеи:
[Route("Passport/")]
public IActionResult Passport()
{
if (this.User.Identity.IsAuthenticated)
or pseudocode:
if (tokenIsValid(getJWTTokenFromHeader()));
{
return RedirectToAction("Resources");
}
else
{
return RedirectToAction("Login");
}
}
Я думал о чем-то вроде этого:
[Route("Passport/")]
public IActionResult Passport()
{
var token = ExtractTokenFromHeader();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue
("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
var get = client.GetAsync($"http://localhost/verifyToken").Result;
var responseBody = await get.Content.ReadAsStringAsync().ConfigureAwait(false);
switch (get.StatusCode)
{
case HttpStatusCode.Unauthorized:
return RedirectToAction("Login");
case HttpStatusCode.OK:
return RedirectToAction("Resources");
default:
return RedirectToAction(...);
}
}
Где конечная точка verifyToken имеет атрибут [Authorize]
и просто возвращает неавторизованный (по умолчанию) или OK (из кода)