Django 中的自定义权限
Custom permissions in Django
在Django Rest框架中,我们可以验证权限,例如(isAuthenticated, isAdminUser...)
但是我们如何添加我们的自定义权限并决定 django 可以使用这些权限做什么?
我真的很想了解背后发生了什么(我没有找到解释这个的文档):
@permission_classes([IsAdminUser])
谢谢
如果您正在使用 VSCode,请将鼠标悬停在 @permission_classes([IsAdminUser])
上,点击命令(在您的键盘上)。
您可以看到幕后发生的事情,播放并创建您的自定义 Django 版本(不推荐),或者您可以覆盖该函数。
自己写权限,像这样:
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) # my function to validate the user
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):
例如,这只是一个视图集,您可以使用通用视图集或任何您想要的。
在Django Rest框架中,我们可以验证权限,例如(isAuthenticated, isAdminUser...) 但是我们如何添加我们的自定义权限并决定 django 可以使用这些权限做什么?
我真的很想了解背后发生了什么(我没有找到解释这个的文档):
@permission_classes([IsAdminUser])
谢谢
如果您正在使用 VSCode,请将鼠标悬停在 @permission_classes([IsAdminUser])
上,点击命令(在您的键盘上)。
您可以看到幕后发生的事情,播放并创建您的自定义 Django 版本(不推荐),或者您可以覆盖该函数。
自己写权限,像这样:
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) # my function to validate the user
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):
例如,这只是一个视图集,您可以使用通用视图集或任何您想要的。