用户认证:
1.项目下utils文件写auth.py文件

from rest_framework import exceptions
from api import models
from rest_framework.authentication import BaseAuthentication
#还有4个类可以继承
class BasicAuthentication(BaseAuthentication) 可以弹出登录框
class SessionAuthentication(BaseAuthentication):
class TokenAuthentication(BaseAuthentication):
class RemoteUserAuthentication(BaseAuthentication): class Authtication(BaseAuthentication):
#用户认证类
def authenticate(self,request):
#源码方法重写
token = request._request.GET.get('token')
token_obj = models.UserToken.objects.filter(token=token).first()
if not token_obj:
raise exceptions.AuthenticationFailed('用户认证失败')
#在rest framework内部会将这两个字段赋值给request,以供后续使用
return (token_obj.user,token_obj) #认证失败之后返回给浏览器的请求头
def authenticate_header(self,request):
pass

2、settings配置用户全局认证如下:

'DEFAULT_AUTHENTICATION_CLASSES':['api.utils.auth.Authtication',], #用户全局认证

3.views业务类可以在全局认证外设置单独认证规则

authentication_classes = [] #已设置全局认证,此处即空认证

4.源码认证流程图

5.匿名用户全局配置:


REST_FRAMEWORK = {'UNAUTHENTICATED_USER':None, #匿名,request.user = None 

'UNAUTHENTICATED_TOKEN':None, #匿名,request.auth = None }

「Django」rest_framework学习系列-用户认证的更多相关文章

  1. 「Django」rest_framework学习系列-权限认证

    权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPP ...

  2. 「Django」rest_framework学习系列-版本认证

    1.自己写: class UserView(APIView): versioning_class = ParamVersion def get(self,request,*args,**kwargs) ...

  3. 「Django」rest_framework学习系列-用户登录

    用户POST登录-->后台验证用户名密码-->验证正确返回TOKEN-->验证错误返回错误信息 class UserAPI(APIView): #用户登录类 def post(sel ...

  4. 「Django」rest_framework学习系列-节流控制

    1.节流自定义类: import time from api import models VISIT_RECORD = {} class VisitThrottle(BaseThrottle): #设 ...

  5. 「Django」rest_framework学习系列-解析器

    满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x& ...

  6. 「Django」rest_framework学习系列-序列化

    序列化方式一 :在业务类里序列化数据库数据 class RolesView(APIView): def get(self,request,*args,**kwargs): roles = models ...

  7. 「Django」rest_framework学习系列-API访问跨域问题

    #以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin ...

  8. 「Django」rest_framework学习系列-路由

    自动生成4个url路由:from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'wrx' ...

  9. 「Django」rest_framework学习系列-渲染器

    渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat ...

随机推荐

  1. PReLU——Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

    1. 摘要 在 \(ReLU\) 的基础上作者提出了 \(PReLU\),在几乎没有增加额外参数的前提下既可以提升模型的拟合能力,又能减小过拟合风险. 针对 \(ReLU/PReLU\) 的矫正非线性 ...

  2. 创建image

    摘要: 本节演示如何通过 Web GUI 和 CLI 两种方法创建 Image. 本节演示如何通过 Web GUI 和 CLI 两种方法创建 Image. OpenStack 为终端用户提供了 Web ...

  3. 寻找bug

    bug1:void不应有返回值. bug2:while(n--)没有条件终止循环. bug3:size和data没有定义 bug4:arr 是sz 在大于0的情况下创建的 一定部位bull   下面的 ...

  4. 寒假c++学习计划

    课程选择 概览 清华大学 C++语言程序设计基础 深入学习 清华大学 C++语言程序设计进阶 (2015年秋) 理由 清华大学郑莉老师的课浅显易懂,很适合我这种小白,再加上学习过c语言理解c++基础并 ...

  5. Nginx 配置站点

    1-进入 配置文件夹   cd /etc/nginx/cof.d   2-创建一个一站点名称命名的配置文件   vim kestrel-syslyracom.conf   3-在.conf 文件中输入 ...

  6. hdu 5524

    由于是完全二叉树,所以我们可以预先知道整棵树的形状,因此可以判断根节点的两个子节点哪个是满二叉树,哪个不是满二叉树(必然是一边满,一边不满),对于满的子节点,我们可以直接求出它的不同子树的个数,也就是 ...

  7. HDU 5269 ZYB loves Xor I Trie树

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5269 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  8. ubuntu关闭系统自动检测错误

    sudo gedit /etc/default/apport 将enabled=1 改成 enabled=0

  9. lintcode-480-二叉树的所有路径

    480-二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径. 您在真实的面试中是否遇到过这个题? Yes 样例 给出下面这棵二叉树: 所有根到叶子的路径为: [ "1-> ...

  10. Hash(散列函数)简单应用引出解决散列冲突的四种方法

    商店允许顾客通过电话订购商品,并在几天后上门自取.商店的数据库使用客户的电话号码作为其检索的关键字(客户知道自己的电话号码,而且这些电话关键字几乎是唯一的).如何组织商店的数据库,以允许更加高效的进行 ...