簡體   English   中英

向 django rest api 添加權限

[英]Adding permissions to a django rest api

我正在研究 django rest api,我想為其添加權限。 我決定 go 與 IsAuthenticatedOrReadOnly 允許沒有經過身份驗證的人只讀並允許經過身份驗證的人添加數據

設置.py:

REST_FRAMEWORK = {

    'DEFAULT_PERMISSION_CLASSES': [

        'rest_framework.permissions.IsAuthenticated',
    ]}

視圖.py:

@api_view(['GET','POST'])

@permission_classes([IsAuthenticatedOrReadOnly])

def list_drinks(request, format=none):
  
   if request.method ==  'GET':

        drinks = Drink.objects.all()

        serializer = DrinkSerializer(drinks, many=True)

        return Response(serializer.data)

    if request.method == 'POST':

        serializer = DrinkSerializer(data=request.data)

        if serializer.is_valid():

            serializer.save()

            return Response(serializer.data, status=status.HTTP_201_CREATED)

當我嘗試在沒有身份驗證的情況下訪問 api 時,我只能閱讀,但是當我嘗試在添加用戶名和密碼時進行修改時,我收到消息“詳細信息”:“您無權執行此操作。” 即使我被認證為管理員(超級用戶)

有什么問題?

確保您的REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"]設置中有必要的身份驗證類。

對於基本身份驗證,將"rest_framework.authentication.BasicAuthentication"添加到列表中。

如果您使用的是可瀏覽的 API,您需要添加 session 身份驗證"rest_framework.authentication.SessionAuthentication"

暫無
暫無

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

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