DRF修改权限、用户认证方式

简介: 修改权限、用户认证方式在settings中全局配置REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.

修改权限、用户认证方式

  • 在settings中全局配置

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'rest_framework.authentication.BasicAuthentication',
            'rest_framework.authentication.SessionAuthentication',
        ]
    }
  • 基于每个视图集进行配置

    from rest_framework.authentication import SessionAuthentication, BasicAuthentication
    from rest_framework.permissions import IsAuthenticated
    from rest_framework.response import Response
    from rest_framework.views import APIView
    
    class ExampleView(APIView):
        authentication_classes = [SessionAuthentication, BasicAuthentication]
        permission_classes = [IsAuthenticated]
    
        def get(self, request, format=None):
            content = {
                'user': unicode(request.user),  # `django.contrib.auth.User` instance.
                'auth': unicode(request.auth),  # None
            }
            return Response(content)
  • 配合@api_view装饰器基于函数一起使用

    from rest_framework.decorators import permission_classes, authentication_classes
    class ExampleView(APIView):
    
        @api_view(['GET'])
        @authentication_classes([SessionAuthentication, BasicAuthentication])
        @permission_classes([IsAuthenticated])
        def example_view(request, format=None):
            content = {
                'user': unicode(request.user),  # `django.contrib.auth.User` instance.
                'auth': unicode(request.auth),  # None
            }
            return Response(content)
  • 配合@action装饰器基于函数一起使用

    
    class ExampleView(APIView):
    
        @action(methods=['get'], detail=False, url_path='url', url_name='url', permission_classes=(IsAuthenticated,), authentication_classes=(SessionAuthentication, BasicAuthentication))
        def example_view(request, format=None):
            content = {
                'user': unicode(request.user),  # `django.contrib.auth.User` instance.
                'auth': unicode(request.auth),  # None
            }
            return Response(content)

参考链接:


相关文章
|
存储 关系型数据库 MySQL
RDS MySQL 数据库运维简述
从运维的视角,汇总云数据库RDS MySQL使用的避坑指南。文章初版,维护更新,欢迎指点。
1421 3
|
3月前
|
传感器 人工智能 边缘计算
智慧养老新基建:康养机器人核心技术解析与主流产品选型指南
随着老龄化加剧,康养机器人正从概念走向落地,融合SLAM导航、多模态感知、医疗级数据交互、大模型语音理解与康复评估技术,实现健康监测、跌倒预警、情感陪伴等多元功能。本文解析五大核心技术,并推荐猎户星空、优必选、新松、傅利叶及ElliQ等代表性产品,涵盖居家、机构、康复与情感场景,助力智慧养老科学选型与应用落地。(238字)
|
5月前
|
弹性计算 缓存 前端开发
交友源码APP开发搭建流程基本功能/正版聊天交友软件同城交友系统搭建 助你轻松开启浪漫同城社交
开发一款成功的同城交友APP,是技术、产品、运营和人性洞察的完美结合。它不仅仅是一个软件,更是一个创造连接、传递幸福的平台。 当用户在您的平台上结识了挚友、找到了伴侣,甚至拓展了事业圈子时,您就真正实现了“助你轻松开启浪漫同城社交”的使命。
424 0
|
11月前
|
JSON API 数据格式
深入研究:Shopee 商品详情 API 接口详解
Shopee 商品详情 API 是针对东南亚及中国台湾地区电商开发者的强大工具,可获取商品的详细信息(如价格、库存、描述等),支持竞品分析与市场调研。通过 HTTP GET/POST 请求,传入商品 ID 等参数,返回 JSON 格式的商品数据,包括基本信息、销售数据、商家信息等。以下是 Python 示例代码,展示如何使用 requests 库调用该接口并处理响应数据。注意实际应用需遵循 Shopee 认证要求。
|
5月前
|
数据采集 弹性计算 供应链
阿里云服务器ECS抢占式实例介绍:灵活、高效、低成本的选择
阿里云ECS抢占式实例价格优惠,最高可省90%,按小时计费,适合无状态、容错性强的应用,如大数据分析、测试等。但存在被释放风险,不适用于数据库等有状态服务,需注意数据备份与使用限制。
267 0
|
7月前
|
人工智能 搜索推荐 算法
AI提示词的四种学习姿势:让你的AI像朋友一样懂你
想象一下,你有个超级聪明的AI朋友,但它不知道你想要什么。本文用最轻松的方式告诉你,如何通过四种不同的'教学姿势',让AI秒懂你的需求,从完全不懂到心有灵犀,一步步成为你的最佳拍档!
398 6
|
运维 NoSQL Redis
镜像包是什么
镜像包是什么
804 3
|
机器学习/深度学习 PyTorch API
|
自然语言处理 安全 Shell
【Python】已解决:Python pip正确安装pyhanlp库步骤
【Python】已解决:Python pip正确安装pyhanlp库步骤
770 2
|
资源调度 计算机视觉
图像处理之图像加噪
图像处理之图像加噪
418 0
图像处理之图像加噪

热门文章

最新文章