Добавление претензий в токен jwt от jQuery AJAX не работает - PullRequest
0 голосов
/ 12 марта 2020

Не удалось добавить утверждения в токен 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.

В чем может быть проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...