如何在Django休息框架中验证用户?

时间:2018-03-04 17:52:00

标签: python django django-rest-framework django-views

我在我的Django API中添加了一些用于发布删除和放置数据的URL,我不知道如何首先验证用户并让他们中的一些人使用这些方法并禁止其中一些

2 个答案:

答案 0 :(得分:0)

据我所知,你可以使用内置装饰器

  

@user_passes_test

然后您可以指定谁可以访问您的观点,如下所示

from django.contrib.auth.decorators import user_passes_test

def admin_user(user):
    return user.is_superuser # write your logic here

@user_passes_test(admin_user)
def your_view(request):
    --------

查看文档以获得更多说明:https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

答案 1 :(得分:0)

由于您使用的是标记django-rest-framework,我假设您的视图是使用Django REST Framework创建的。

首先,您应该强制用户 authenticated to use the API 。其次,您需要定义 types of permissions are needed 来执行操作。

您声明Django超级用户应该能够执行这些操作。因此,您可以创建自定义权限,以确保只有Django超级用户的用户才有权限:

from rest_framework.permissions import BasePermission


class IsSuperUser(BasePermission):
    """
    Allows access only to admin users.
    """

    def has_permission(self, request, view):
        is_superuser = request.user and request.user.is_superuser
        if not is_superuser and request.user:
            # Your ban logic goes here
            pass
        return is_superuser

然后在你看来,你可以这样做:

from rest_framework.views import APIView
from your_app.permissions import IsSuperUser

class YourApiView(APIView):
    permission_classes = [IsSuperUser]

如果这不是您的足够信息,我建议您按照 Django REST Framework's tutorial