簡體   English   中英

如何在Django rest框架中對用戶進行身份驗證?

[英]how to authenticate users in Django rest framework?

我在Django API中添加了一些用於發布刪除和放置數據的URL,但我不知道如何首先對用戶進行身份驗證,以及如何使用其中的方法來禁止用戶使用某些方法

據我所知,您可以使用內置裝飾器

@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

由於您使用的是django-rest-framework標簽,因此我假設您的視圖是使用Django REST Framework創建的。

首先,您應強制對用戶進行身份驗證以使用API 其次,您需要定義執行操作所需的權限類型

您聲明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的教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM