Для GET я использую 404 и фильтрацию.Если ответ представляет собой набор сущностей, то я просто отфильтрую те, на которые у текущего пользователя нет прав READ.(Если все данные отфильтрованы, запрос является пустым набором, но он все еще в порядке.) Если ответ является одним объектом, и пользователь не имеет разрешения READ, то я возвращаю 404.
IMHOЕсли пользователь не имеет разрешения READ, он даже не должен знать о существовании объекта.(Если я верну 403, он узнает, что существует объект с таким идентификатором.)
Я верну 403, только если у пользователя есть READ, но нет разрешения UPDATE / DELETE, и он пытается манипулировать данными.
Кроме того, если он пытается удалить несколько объектов, я удаляю только те, на которые у него есть разрешение DELETE, и беззвучно пропускаю остальные.
Я создал Spring-Data-Rest ACLрасширение , которое автоматически обрабатывает все эти проблемы на всех автоматически генерируемых конечных точках (+ намного больше), если вы заинтересованы.