当前位置: 首页 > article >正文

Django DRF - 权限Permissions

权限Permissions

权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。

  • 在执行视图的dispatch()方法前,会先进行视图访问权限的判断
  • 在通过get_object()获取具体对象时,会进行对象访问权限的判断

1.提供的权限

  • AllowAny 允许所有用户
  • IsAuthenticated 仅通过认证的用户
  • IsAdminUser 仅管理员用户
  • IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取

2.使用

可以在配置文件中设置默认的权限管理类,如

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

如果未指明,则采用如下默认配置

'DEFAULT_PERMISSION_CLASSES': (
   'rest_framework.permissions.AllowAny',
)

也可以在具体的视图中通过permission_classes属性来设置,如

from book.models import BookInfo
from book.serializers import BookInfoModelSerializer
from rest_framework.viewsets import ModelViewSet
from rest_framework.authentication import SessionAuthentication

class BookModelViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoModelSerializer

    #单个视图,设置单独认证方式
    authentication_classes = [SessionAuthentication]

3.指定视图设置

from book.models import BookInfo
from book.serializers import BookInfoModelSerializer
from rest_framework.viewsets import ModelViewSet
from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import AllowAny

class BookModelViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoModelSerializer

    #单个视图,设置单独认证方式
    authentication_classes = [SessionAuthentication]
    #设置单独的权限
    permission_classes = [AllowAny]

以上就是Django DRF 的权限认证的设置,希望对你有所帮助。
内容很简单,更多的需要可以参考官方文档:https://www.django-rest-framework.org/api-guide/permissions/


http://www.kler.cn/a/9886.html

相关文章:

  • Linux——GPIO输入输出裸机实验
  • 如何判定linux系统CPU的核心架构
  • (六)Spark大数据开发实战:豆瓣电影数据处理与分析(scala版)
  • 鸿蒙next版开发:ArkTS组件点击事件详解
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • 软件测试面试2024最新热点问题
  • stable-diffusion-webui浅叙
  • Python每日一练(20230413)
  • sql server 入门教程
  • 知识图谱:Neo4j数据库的基本使用——创建张学良的关系谱
  • 安全防御第四天:防病毒网关
  • 基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)
  • 花了近三周时间对 ChatGPT 进行多方面了解、体验后写的报告,超级全面,建议想了解的朋友看看
  • Spring 源码分析(二)——GenericBeanDefinition 分析
  • Java知识点学习(第6天)
  • SQL Server的日志传送
  • 高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务
  • 机器学习-问答题准备(英文)-更新中
  • 用JavaScript实现最大子数组和的动态规划算法
  • Msray-Plus采集工具让您的市场营销更加简单,让您的营销成果更加显著
  • NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
  • 吐血奉献精心整理的一大波数据集
  • 【C#】程序和sql速度对比
  • 【消息队列】聊一下生产者消息发送流程
  • 7nm舱泊一体SoC的新玩家
  • 三大前端框架Vue, Angular, React