[英]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.