Запрет доступа пользователям к конечной точке веб-API ASP.NET CoreC#

Место общения программистов C#
Ответить
Anonymous
 Запрет доступа пользователям к конечной точке веб-API ASP.NET Core

Сообщение Anonymous »

У меня есть конечная точка в моем API, например: api/users/{:userId}/...
Мне нужен только пользователь с идентификатором пользователя чтобы иметь доступ к своей конечной точке, а не к конечным точкам любого другого пользователя.
Я реализовал токен JWT Bearer, который используется для авторизации. Я получаю от него идентификатор и проверяю, соответствует ли он маршруту, к которому хочет получить доступ пользователь:

Код: Выделить всё

[HttpGet("{userId:int}"), Authorize]
public async Task GetUserById([FromRoute] int userId)
{
var id = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

if (id != userId)
{
return BadRequest("Access denied.");
}

var user = await unitOfWork.UserRepository.GetUserByIdAsync(userId);

if (user == null)
return NotFound("User not found");

return Ok(user);
}
Я не думаю, что это правильный подход. Токен можно легко подделать, а идентификатор изменить. Как еще я мог это сделать?

Подробнее здесь: https://stackoverflow.com/questions/791 ... i-endpoint
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»