Есть метод который создает токен:
[HttpPost]
public IActionResult Login(LoginViewModel model)
{
var data = _users.FirstOrDefault(u => u.Name == model.Name && u.Password == model.Password);
if(data == null)
return Unauthorized();
var claim = new List<Claim>() { new Claim(ClaimTypes.Name, data.Name!) };
var jwt = new JwtSecurityToken(
issuer : AuthOption.ISSUER,
audience : AuthOption.AUDIENCE,
claims : claim,
expires : DateTime.UtcNow.Add(TimeSpan.FromMinutes(2)),
signingCredentials : new SigningCredentials(AuthOption.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256)
);
var token = new JwtSecurityTokenHandler().WriteToken(jwt);
HttpContext.Session.SetString("token", token);
return RedirectToAction("Data");
}
Есть MiddleWare который по сути должен устанавливать заголовок
readonly RequestDelegate _next;
public RoutingMiddleware(RequestDelegate next) => _next = next;
HttpClient _httpClient = new();
public async Task InvokeAsync(HttpContext context)
{
string? token = context.Session.GetString("token");
if (token is not null)
{
_httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
_httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
await _next.Invoke(context);
}
Но почему то после того, когда пользователь проходит авторизацию, и пытается перейти на страницу /Data, ему отказывает в доступе
[Authorize]
public IActionResult Data()
{
return Json("Syca blyt");
}
Заранее благодарю за помощь :)