Django Restful Framework (DRF)中类的调用与自定义-- 以 autentication 认证为例

DRF 的 request 对 django 的 request 进行了更一步的封装; 通过获取认证相关的所有类,并实例化,传入request对象(user,auth)

自定义实例

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.request import Request
from goods.serializers import GoodsSerializer
from rest_framework.exceptions import APIException
# Create your views here.
from goods.models import Goods class MyAuthentication(object):
def authenticate(self,request):
token = request.query_params.get('token')
if token == 'abc':
return ('aaa','bbb')
raise APIException('认证失败') class GoodsListView(APIView):
authentication_classes = [MyAuthentication,]
def get(self,request,*args,**kwargs):
print(request.user,request.auth)
goods = Goods.objects.all()
goods_serializer = GoodsSerializer(goods,many=True)
return Response(goods_serializer.data)

流程

在使用的时候 使用 BaseAuthentication类

这里可以把认证 当成用户登录状态的判断

登录时不需要 认证,登录之后的访问都需要 进行 登录用户身份的确认。

可以全局添加认证,然后把登录,或者主页等不需要 登录的视图,设置为 authentication_classes= []

当 authenticate 不处理返回None的时候,匿名用户的设置

REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES":[],
# "UNAUTHENTICATED_USER":lambda :'匿名用户',
"UNAUTHENTICATED_USER":None,
# "UNAUTHENTICATED_TOKEN":lambda :'没有验证信息',
"UNAUTHENTICATED_TOKEN":None, }

BasicAuthentication

    def authenticate_header(self, request):
return 'Basic realm="%s"' % 'api

Django -- DRF 认证流程的更多相关文章

  1. drf:restful概念,类继承关系,drf请求封装,drf请求流程,版本控制组件,认证组件(token),权限组件

    1.restful规范 resfful规范的概念最重要: 是一套规范,规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的就是,以前写增删改查的时候需要些四个视图寒素,rest ...

  2. 二、django rest_framework源码之认证流程剖析

    1 绪言 上一篇中讲了django rest_framework总体流程,整个流程中最关键的一步就是执行dispatch方法.在dispatch方法中,在调用了一个initial方法,所有的认证.权限 ...

  3. Django rest_framework 认证源码流程

    一.请求到来后,都要先执行dispatch方法 dispatch根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的dispatch方法有很多的功能 def d ...

  4. DRF比Django的认证和权限高在哪里

    Django可以用LoginRequiredMixin和PermissionRequiredMixin给类视图添加认证和权限,DRF做了高级封装,提供了更简洁的实现方式.我们通过继续学习官网教程来进行 ...

  5. Django drf:认证及组件、token、局部钩子源码分析

    一.drf认证功能 二.token讲解 三.局部钩子源码分析 一.drf认证功能 1.认证简介: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录则不能查 ...

  6. python 全栈开发,Day97(Token 认证的来龙去脉,DRF认证,DRF权限,DRF节流)

    昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 ...

  7. (四) DRF认证, 权限, 节流

    一.Token 认证的来龙去脉 摘要 Token 是在服务端产生的.如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端可以在每次请求的时候带上 To ...

  8. django用户认证系统——拓展 User 模型

    Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...

  9. django drf 基础学习1

    一 环境配置    python3.5+ django2.0 pymysql二 安装   /usr/bin/python3 -m pip install django   /usr/bin/pytho ...

随机推荐

  1. 快速入门Python中文件读写IO是如何来操作外部数据的?

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  2. 终端创建scrapy项目时报错(转)

    在终端创建scrapy项目时报错 PS D:\scrapy_project> scrapy startproject fangFatal error in launcher: Unable to ...

  3. oracle 创建视图、修改视图、删除视图、利用视图操作基本表

    转:http://blog.sina.com.cn/s/blog_6b58d2fa0100rgvw.html 1.使用create or replace view命令创建视图 语法格式: create ...

  4. 3. Longest Substring Without Repeating Characters(最长子串,双指针+hash)

    Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...

  5. Kattis - glitchbot 【DFS】

    Kattis - glitchbot [DFS] 题意 有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的.我们需要找出那个指令,并且改成正确的 ...

  6. cdoj1337郭大侠与阴阳家

    地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others)     ...

  7. Unity 碰撞检测 OnTriggerEnter 入门

    当我们需要检测两个物体A和B发生碰撞的时候,必须要满足一下条件 1:A和B必须有碰撞边界,你可以点开一个A,在属性窗口点击AddComponent,在physis(物理)目录下看到以下这些 ,根据形状 ...

  8. Java:判断字符串中包含某字符的个数

    Java:判断字符串中包含某字符的个数 JAVA中查询一个词在内容中出现的次数: public int getCount(String str,String key){ if(str == null ...

  9. winform webbrowser禁用网页target=blank

    /// <summary> /// 屏蔽target=_blank 的弹出窗口 /// </summary> /// <param name="sender&q ...

  10. 大牛是怎么思考设计MySQL优化方案的?

    在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 图-MySQL查询过程 一.优化的哲学 ...