Как использовать пользовательские группы и разрешения Django в интерфейсе React с Django Rest Framework - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Django Rest Framework с React на внешнем интерфейсе.Я использую Token Athentication и все работает нормально.Теперь у меня есть требование, чтобы разные пользователи могли получать доступ к разным вещам в зависимости от их прав.Это возможно при использовании администратора Django, но мои пользователи будут использовать интерфейс React.

Я просмотрел Разрешения Django Rest , но я не видел, как я могу использовать это в своем интерфейсе React.Я также посмотрел на Джанго Страж , но я не уверен, что мне это нужно для моего требования.Я просмотрел много учебников и статей, но я не могу найти какой-либо прямой способ добиться этого.

Вот подход, который я использовал sofar: создал сериализатор для встроенной пользовательской модели, затем создалViewSet и я теперь можем получить доступ к списку пользователей через API.

from django.contrib.auth.models import User

class UserSerializer(SerializerExtensionsMixin,serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

class UserViewSet(SerializerExtensionsAPIViewMixin, viewsets.ModelViewSet):
    serializer_class = UserSerializer
    queryset = User.objects.all()

router = DefaultRouter()
router.register(r'user', UserViewSet, basename='user')

Используя это, я могу получить доступ к пользователю с группами и разрешениями, как показано на рисунке ниже.Теперь я собираюсь вызвать api url на моем интерфейсе React и каким-то образом использовать разрешения и группы, связанные с пользователем, чтобы контролировать то, что видят пользователи.

Есть ли лучший способ выполнить это требование?Я делаю это правильно?Кто-то сделал это, и, может быть, я могу позаимствовать его опыт?

enter image description here

1 Ответ

0 голосов
/ 01 февраля 2019

DRF предоставляет классы разрешений. Также, если вам нужна некоторая настройка, вы можете сделать это путем создания пользовательских классов разрешений.См. https://www.django -rest-framework.org / api-guide / permissions / # api-reference .

На стороне React Если вы используете маршрутизатор React, вы можете защитить каждый маршрут на некоторыхроли / разрешения, полученные от бэкэнда.См. https://hackernoon.com/role-based-authorization-in-react-c70bb7641db4 Это может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...