Как разграничивать права доступа в API?

Продумываю API, возник вопрос с разграничением доступа.
Предположим у нас есть модуль контент (стат. страницы, новости, записи, заметки и тп.). На примере новостей может получится следующее:
- Пользователи могут просматривать и создавать новости
- Администраторы могут просматривать и создавать новости

Однако тут есть одно больное НО:
- пользователи могут просматривать и создавать новости не без манипуляции определенными полями (дата создания, дата редактирования, автор, категория, модерация и тп.)
- администратор обладает куда большими правами и может делать все, что с этим связанно.

Если взять методологию REST и предположить следующие URL:
- /contents/records
- /contents/records/17

В таком ключе потребуется много логики, чтобы понимать кто, там какими полями пытается манипулировать.

Используя другой подход, можно разграничить все это дело следующим образом:
- /contents/records
- /contents/records/17
- /control/contents/records
- /control/contents/records/17

Как поступить с подобной задачей ?
  • Вопрос задан
  • 1555 просмотров
Пригласить эксперта
Ответы на вопрос 3
@xfg
Сделать бекенд и фронтенд контроллеры. Через бекенд контроллер можно менять все поля, через фронтенд контроллер не все. Пользователей и Администраторов сделать используя RBAC. Пользователи могут вызывать фронтенд контроллеры и не могут бекенд контроллеры.
Ответ написан
Используйте ключи доступа. Создайте отдельную таблицу KEY | ROLE и потом уже при запросе проверяйте ключ на доступ. Передавать GET параметром или в заголовке запроса

Пример -
/contents/records?key=3c6e0b8a9c15224a8228b9a98ca1531d
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы