Не удалось добавить утверждения в токен JWT при вызове API (защищенного с помощью JWT) с помощью jQuery AJAX.
Код jQuery довольно прост:
$.ajax({
type: "POST",
url: "https://localhost:44314/Reservation",
headers: {
Authorization: 'Bearer ' + token
},
dataType: 'json',
success: function (result, status, xhr) {
ShowData(result);
},
error: function (xhr, status, error) {
alert(error);
}
});
Формула, содержащая утверждения, содержит следующую функцию:
var claims = new[] {
new Claim("Name", "Ram"),
new Claim(JwtRegisteredClaimNames.Email, "hello@stackoverflow.com"),
};
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("MynameisJamesBond007"));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: "https://www.yogihosting.com",
audience: "https://www.yogihosting.com",
expires: DateTime.Now.AddHours(3),
signingCredentials: credentials,
claims: claims
);
return new JwtSecurityTokenHandler().WriteToken(token);
Метод API довольно прост, захватывает заявку и отфильтровывает данные:
[HttpGet]
public IEnumerable<Reservation> Get()
{
var claims = HttpContext.User.Claims;
return CreateDummyReservations().Where(t => t.Name == claims.FirstOrDefault(c => c.Type == "Name").Value);
}
Проблема заключается в том, что вызывается метод API, но данные не фильтруются (возвращаются все данные). Если я вызову этот API с C#, тогда фильтрация данных будет выполнена правильно. Но не работает с jQuery.
В чем может быть проблема.