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

问题描述 投票:0回答:2

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

python django django-rest-framework django-views
2个回答
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


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

© www.soinside.com 2019 - 2024. All rights reserved.