Django REST框架 - 如何快速检查用户权限?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django REST框架 - 如何快速检查用户权限?相关的知识,希望对你有一定的参考价值。

我通常使用permission_required装饰器来快速拒绝用户访问视图。

from django.contrib.auth.decorators import permission_required

@permission_required('my_app.view_mymodel',login_url='/sign_in/')
def my_view(request):
    ...

现在,我正在使用DRF,我正在尝试找到一种检查用户权限的正确方法。现在,我正在使用DjangoModelPermissions这很好,但由于它根据定义的视图的查询集工作,有时我需要检查不是为视图的查询集定义的权限。

有没有办法通过提供烫发字符串列表来快速检查权限?

注意:我知道我可以扩展BasePermission并定义我自己的逻辑,但会产生很多类。

答案

你可以通过使用DRF's decorators@api_view@permission_classes)来实现这一目的:

from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response

@api_view(['GET'])
# At first, you should define your view as an API view
# by using the @api_view decorator

@permission_classes((IsAuthenticated, ))
# With the @permission_classes decorator you can provide a tuple
# with the desired permissions for this view

def example_view(request, format=None):
    content = {
        'status': 'request was permitted'
    }
    return Response(content)

现在您的example_view只能由经过身份验证的用户访问。

以上是关于Django REST框架 - 如何快速检查用户权限?的主要内容,如果未能解决你的问题,请参考以下文章

<script> 的 Django REST 框架密码安全性

如何在带有 Django Rest 框架的 React 前端使用 Django 用户组和权限

如何知道哪个用户被分配给了令牌(JWT Django rest 框架)?

如何在django rest框架中创建加密密码[重复]

如何忽略发送到 Django REST 框架的 CSRF 令牌?

第三方Django REST框架申请