【发布时间】:2019-06-26 01:10:03
【问题描述】:
我在前端使用带有 React 的 Django Rest Framework。我正在使用令牌认证并且一切正常。我现在需要确保不同的用户可以根据他们的权限访问不同的东西。使用 Django admin 可以做到这一点,但我的用户将使用 React 前端。
我查看了Django Rest permissions,但我没有看到如何在我的 React 前端使用它。我还查看了Django guardian,但我不确定它是否满足我的要求。我浏览了许多教程和文章,但似乎找不到任何直接的方法来实现这一点。
这是我目前使用的方法: 为内置的用户模型创建了一个序列化器,然后创建了一个视图集,我现在可以通过 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')
使用它,我可以访问具有组和权限的用户,如下图所示。我现在继续在我的 React 前端调用 api url,并以某种方式使用与用户关联的权限和组来控制用户可以看到的内容。
有没有更好的方法来实现这个要求?我这样做对吗?有人这样做过吗?我可以借鉴他们的经验吗?
【问题讨论】:
-
您也可以序列化组和权限,并在用户序列化器中使用该序列化器。将用户的组和权限保存在您的 redux 商店中(我猜您正在使用 redux 来管理状态)。然后您可以使用组/权限名称检查权限,而不是依赖 id,因为 id 可以在 dev 和 prod 环境中更改。在反应中编写一个自定义组件,它将获取哪些组和权限可以通过道具查看它。它可以连接到 redux 存储并检查用户是否属于该组,并呈现子级或重定向。然后将你的东西包装在该组件中
-
这个问题你解决了吗,如果解决了?
标签: django reactjs django-rest-framework django-users