Это плохая практика, чтобы две разные конечные точки выполняли одну и ту же задачу, но имели разные разрешения - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть конечная точка, которая выполняет задачу (скажем, что-то разблокировать). Есть два разных экрана, из которых, когда я могу вызвать эту конечную точку с экрана A, должен иметь доступ только администратор, но, скажем, с экрана B должен иметь доступ как администратор, так и обычный пользователь.

Использование Django рамки отдыха для проектирования моих конечных точек отдыха. Мой код на данный момент выглядит следующим образом.

@is_admin(error='User doesn't have permission')
def doSomething():
  ......

Мне было интересно, должен ли я просто дублировать эту конечную точку без разрешения и использовать ее с экрана B или есть какой-то другой лучший способ.

1 Ответ

0 голосов
/ 18 февраля 2020

Проще говоря, вы только указанный c пользователь с указанными c разрешениями могут получить доступ к вашему представлению. В этом случае вам не следует писать отдельные URL для ваших просмотров. Django предоставляет возможность указать классы разрешений для представления. Вы можете сделать это следующим образом

class YourView(generics.GenericApiView):
     permission_classes = [IsAdminUser | IsOtherUserType]

Любой пользователь может получить доступ к вашему представлению, только если у него есть IsAdminUser или IsOtherUserType. IsAdminUser и IsOtherUserType являются просто примерами имен. Вы можете определить свои собственные разрешения в соответствии с вашими требованиями.

...