Что мобильное приложение, что CRM (Customer Relationship Management) предполагает разделение доступов к данным. Если в мобильном приложении может быть скрытый режим доступа к альфа-функциям, то в CRM продавцу нет рабочей необходимости знать маржинальность всех сделок компании. Поэтому и при создании API нужно уметь проверять доступ к функциям и данным.

В этом материале рассмотрим уровни доступа:

  1. Доступ по признаку аутентификации — аноним/пользователь
  2. Доступ по признаку глобальных прав — админу доступно больше, чем оператору
  3. Доступ по признаку модельных прав — можно ли выполнить действие X с товарами?
  4. Доступ по признаку объектных прав — можно ли модифицировать свои статьи?
  5. Доступ по признаку бизнес-правил — создавать релиз можно только в будний день, кроме праздничных недель

Несанкционированный доступ и утечка данных может обходиться дорого, поэтому стоит уделить этому время.

В материале буду упоминать django-guardian и django-brackets, которые упрощают организацию доступов в Django приложении.

1. Доступ по признаку аутентификации

Есть понятия авторизация и аутентификация, различия которых можно запомнить так:

  1. Аутентификация — это "Кто ты такой?", то есть "Кто ты по жизни? Чем докажешь?"
  2. Авторизация — это "Что ты можешь?", то есть "С какого района будешь? Вали отсюда"

Вместе с идентификацией получается такой процесс:

  1. Идентификация: "Как тебя зовут?" → "Вася"
  2. Аутентификация: "А ты точно Вася? Докажи!" → показывает документы/татухи
  3. Авторизация: "Окей, ты Вася. Теперь слушай, что тебе можно, а что нельзя"

Всё это к тому, что в условном маркетплейсе:

  • Аноним (неизвестный пользователь) может просматривать каталог товаров
  • Аноним или пользователь может добавлять товары в корзину
  • Однако только авторизованный пользователь может оформить заказ

Авторизация — блокирующая процедура, на ней много пользователей уходят из продукта.

Hello World

Получить доступ к полному материалу
Полный текст доступен в курсе