首页 > 其他分享 >DRF组件--认证

DRF组件--认证

时间:2022-11-27 23:44:09浏览次数:44  
标签:obj get -- self request 认证 token 组件 DRF

DRF---认证功能

自己定义一个认证类,其中类中必定要有authenticate方法

class MyAuthentication():
    def authenticate(self,request):
        token = request._request.GET.get('token')
        token_obj = model_UserToken.objects.filter(token=token).first()
        if not token_obj:
            raise AuthenticationFailed('用户认证失败')
        return (token_obj.user,token_obj)       #返回的元组的第一个值,可在request.user里面调用,第二个在request.auth调用
    def authenticate_header(self,val):
        pass

然后再视图函数中,配置authentication_classes的列表,列表中就是各个认证类的类名

class Dog(APIView):
    authentication_classes = [MyAuthentication,]        #用户认证

如果想要全局使用认证,则直接在settings里面配置

REST_FRAMEWORK = {
    #全局使用的认证类
    'DEFAULT_AUTHENTICATION_CLASSES':['app01.utils.authentication.MyAuthentication',],
    'UNAUTHENTICATED_USER':None,        #匿名用户的request.user的值
    'UNAUTHENTICATED_TOKEN':None        #匿名用户的request.auth的值
}

匿名用户就是所有的认证类都没有通过的用户,叫做匿名用户。

 

 

注意事项

如果一个类根据请求方式不通,进行不同的认证方式,
比如post想进行a认证,get想进行b认证,或者c不进行认证,可以在视图函数CBV里,重写get_authenticators方法
class User(APIView):
    def get_authenticators(self):
        # 重写认证类
        if self.request.method == 'POST':   # post请求不需要认证
            return None
        return [checkAuthentication(),]     #其他的视图还需要继续认证,返回一个类的对象

 

标签:obj,get,--,self,request,认证,token,组件,DRF
From: https://www.cnblogs.com/powfu/p/16931050.html

相关文章

  • 第四章-线程间的同步操作 4-4 使用同步操作简化代码
    1.Functionalprogrammingwithfutures使用future的函数式编程函数式编程指的是一种编程方式,其函数调用的结果只依赖于函数参数,而不依赖于任何其他外部状态。一个纯......
  • lc第319场周赛第三题-逐层排序二叉树所需的最少操作数目
    给你一个值互不相同的二叉树的根节点root。在一步操作中,你可以选择同一层上任意两个节点,交换这两个节点的值。返回每一层按严格递增顺序排序所需的最少操作数目......
  • 解决JDBC与Mysql中文乱码现象
    在用JDBC连接数据库进行打印输出的操作的时候,出现了中文乱码的问题。此时Mysql和网页状况如下:Mysql乱成一窝粥。网页的情况也是不容乐观……......
  • 管理者能力模型学习-九五小庞
      一,业务管理1.制定计划和目标。对目标和计划的选择和制定,直接影响整个团队的工作成效,因此需要管理者对此有清晰的思考和明智的判断。2.过程监控。同样的工作由他......
  • 哪怕是抄,也要每天坚持打卡
    个人学习笔记goselectpackagemainimport( "fmt" "time")//在一个select语句中,Go语言会按顺序从头至尾评估每一个发送接受的语句。//如果其中任意一句可以继续......
  • springBoot 过滤器去除请求参数前后空格(附源码)
    背景:用户在前端页面中不小心输入的前后空格,为了防止因为前后空格原因引起业务异常,所以我们需要去除参数的前后空格!如果我们手动去除参数前后空格,我们可以这样做@......
  • Python第一章 油箱加满!准备出发!
    Python是种易学而强大的编程语言。它包含了高效的高级数据结构,能够用简单而高效的方式进行面向对象编程。Python优雅的语法和和动态类型,以及它天然的解释能力,使其成为了......
  • 这几款PDF神器,满足你的一切需求!
    大家好啊,我是老鱼~无论你是学生党还是上班族,不管是在工作中还是学习中,都离不开​​PDF阅读器​​。最近几年来,为了找一个稳定、快速、小巧、支持批注的PDF阅读器,我花了不少......
  • 验证输入密码是否正确的代码(初学)
    昨天写的判断密码是否正确只能做到是否确认输入密码,不能判断所输入的密码是否正确,今天了解到的strcmp可以进行字符串的比较,从而完成了代码的编写intmain(){inti=0;......
  • 实验五 继承和多态
    task4代码://pets.hpp#pragmaonce#include<iostream>usingnamespacestd;classMachinePets{public: MachinePets(conststrings):nickname(s){} virtuals......