如何使用 Django Rest Framework 在 React 前端使用 Django 用户组和权限

man*_*kin 9 django django-users django-rest-framework reactjs

我在前端使用带有 React 的 Django Rest Framework。我正在使用令牌认证并且一切正常。我现在需要确保不同的用户可以根据他们的权限访问不同的内容。这可以使用 Django admin 实现,但我的用户将使用 React 前端。

我查看了Django Rest 权限,但我没有看到如何在我的 React 前端使用它。我还查看了Django Guardian,但我不确定它是否满足我的要求。我浏览了许多教程和文章,但似乎找不到任何直接的方法来实现这一目标。

这是我迄今为止使用的方法:为内置用户模型创建了一个序列化程序,然后创建了一个 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')
Run Code Online (Sandbox Code Playgroud)

使用它,我可以访问具有组和权限的用户,如下图所示。我现在继续在我的 React 前端调用 api url,并以某种方式使用与用户关联的权限和组来控制用户可以看到的内容。

有没有更好的方法来实现这个要求?我这样做是否正确?有人这样做过吗,我可以借鉴他们的经验吗?

在此处输入图片说明

小智 1

DRF 提供了权限类,如果您需要一些自定义,您可以通过创建自定义权限类来实现。请参阅https://www.django-rest-framework.org/api-guide/permissions/#api-reference

在 React 方面,如果您使用 React 路由器,您可以保护从后端收到的某些角色/权限的每个路由。请参阅https://hackernoon.com/role-based-authorization-in-react-c70bb7641db4 这可能对您有帮助