簡體   English   中英

Django 中的自定義權限

[英]Custom permissions in Django

在 Django Rest 框架中,我們可以驗證諸如 (isAuthenticated, isAdminUser...) 之類的權限,但是我們如何添加自定義權限並確定 django 可以使用哪些權限?

我真的很想了解背后發生了什么(我沒有找到解釋這一點的文檔):

@permission_classes([IsAdminUser])

謝謝

如果您使用VSCode , hover 而不是@permission_classes([IsAdminUser]) ,請單擊命令(在您的鍵盤上)。

在此處輸入圖像描述

您可以查看幕后發生的事情,播放並創建您的自定義 Django 版本(不推薦),或者您可以覆蓋 function。

編寫您自己的權限,如下所示:

def permission_valid_token(func):
    # first arg is the viewset, second is the request
    def wrapper(*args, **kwargs):
        valid_token, user_token = test_token_authorization(args[1].headers)
        if not valid_token:
            return Response(status=status.HTTP_401_UNAUTHORIZED)
        return func(*args, **kwargs)
    return wrapper

這是我在應用程序中使用的權限,可能您將擁有 valid_token 部分

你在視圖中導入它們

from file_that_you_use.permissions import permission_valid_token

而你用作裝飾者

class WeatherViewSet(viewsets.ViewSet):
    @permission_valid_token
    def list(self, request):

例如,這只是一個視圖集,您可以使用通用視圖集或任何您想要的。

暫無
暫無

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

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