В чем разница между использованием утверждения или роли авторизации и использованием параметра, скажем, GET?
Например, я хочу, чтобы пользователь имел доступ только к своим данным:
У меня может быть контроллер с двумя функциями GET:
Сначала с использованием параметра:
И согласно этот ответ с использованием утверждения:
Я мог бы ответить на этот вопрос сам, спросив: Единственная разница в том, что одно (утверждение) codeируется в токен JWT, а другой (параметр) доступен для чтения всем, кто наблюдает за трафиком?
[HttpGet]
[Authorize]
public async Task<ActionResult<IEnumerable<DataDTO>>> GetData(long userId)
{
return _context.Data.Select(data => CreateDataDTO(data)).ToListAsync();
}
[HttpGet]
[Authorize]
public async Task<ActionResult<IEnumerable<DataDTO>>> GetData()
{
//[...]
var user = (System.Security.Claims.ClaimsIdentity)User.Identity;
var userId = user.FindFirstValue("UserId");
return _context.Data.Select(data => CreateDataDTO(data)).ToListAsync();
}
Валерий
Вопрос задан21 января 2024 г.