Django rest framework api key Как установить права на представление/конечную точку по apikey?
Я использую django "rest framework api key"; У меня есть урлы в моем urls.py (я постараюсь сохранить его простым):
a/
b/
c/
и я создал api ключи; скажем, "apikey1", "apikey2" и "apikey3".
Я могу предоставить права на урлы "a" и "b", и тогда "c" не будет доступен ни одному apikey; но все apikey могут получить доступ ко всем зарегистрированным урлам (или представлениям).
Что мне нужно, так это ограничить
"apikey1" только "a/"
>
"apikey2" только к "c/"
а "apikey3" доступ к обоим.
Я знаю, что могу сделать это с пользователями, проверяя аутентифицированного пользователя в запросе, а затем проверяя его по некоторому списку; если пользователь находится в моем списке, продолжайте, иначе перенаправьте 400 или что-то еще.
но как это сделать с помощью apikeys?
Вы можете сделать таблицу, которая сопоставляет API-ключи с URL-путем. Затем создайте класс RestrictedAPIView(APIView). В этом классе переопределите метод dispatch для проверки наличия в базе данных комбинации ключа API и пути URL. Затем во всех ограниченных представлениях вы можете расширить этот класс.