Энни
Хороший вопрос, я задавал себе то же самое во многих случаях. Вот чем я закончил (до сих пор).
Самый чистый (но утомительный) подход - задействовать логику проверки в обоих слоях.
прагматический подход может заключаться в том, чтобы вызывать его только в веб-сети (например, в ваших контроллерах).
Я думаю, что нет ответа, который бы закончил все обсуждение. Я думаю, что это зависит от контекста вашего проекта. Если размер проекта скромный (с точки зрения количества людей и размера кодовой базы), и вы уверены, что не все разработчики разработают не так много кода, который вызывает API вашего сервиса (до такой степени, что вы не сможете его контролировать) ), тогда вполне может быть достаточно выполнить проверку только в веб-слое.
Однако, если вы ожидаете много клиентов, вам может потребоваться более высокий уровень безопасности. Когда я говорю здесь о безопасности, я имею в виду уровень согласованности, который вам нужен.
Если этот уровень высокий, то нет никакого способа обойти его: вам придется делать это как на сервисе (для безопасности), так и на веб-уровне (в основном, чтобы предоставить конечным пользователям приемлемый опыт).
Таким образом, ключевым драйвером здесь является безопасность и то, сколько из этого вам действительно нужно. Если вам нужно много, вы выбираете подход «пурист». Если ваше приложение точно не принимает решения, касающиеся вопросов жизни и смерти, вы выбираете прагматичный подход.