drf-----认证组件

news/2024/11/24 19:31:52/

认证组件

认证组件使用步骤(固定用法)

1 写一个类,继承BaseAuthentication
    2 在类中写:authenticate
    3 在方法中,完成登录认证,如果 不是登录的,抛异常
    4 如果是登录的,返回登录用户和token
    
    5 在视图类中,使用认证类(局部使用)
    class BookView(APIView):
        authentication_classes = [LoginAuth, ] 
     
    6 全局使用:
    # 全局使用
    ### 重点:不要在配置文件中,导入莫名其妙的包
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'app01.auth.LoginAuth'
        ],

    }
    
    7 全局使用后,局部禁用
    class UserView(ViewSet):
        # 局部禁用
        authentication_classes = []
    
    8 认证类的使用顺序
        -优先用视图类配置的
        -其次用项目配置文件
        -最后用drf默认的配置
       
# 小重点;一旦通过认证,在request中就有当前登录用户
    def get(self, request):
        # 一旦通过认证,在request中就有当前登录用户
        print(request.user.name,'访问了接口')

 登录部分代码

from rest_framework.viewsets import ViewSet
import uuid
class UserView(ViewSet):authentication_classes = [Actions, ]        #认证@action(methods=['POST'],detail=False)def login(self,request):username=request.data.get('username')password=request.data.get('password')# token=request.MITA.get('HTTP_TOKEN')user=models.User.objects.filter(username=username,password=password).first()if user:token=str(uuid.uuid4())models.UserToken.objects.update_or_create(user_id=user.id,defaults={'token':token})return Response({'code':100,"msg":'登陆成功','token':token})return Response({'code':101,"msg":'用户名或密码错误'})

  

models.UserToken.objects.update_or_create(user_id=user.id,defaults={'token':token})

user_id=user.id根据这个条件去数据库中查询,没有查询到,就根据defaults={'token':token})

重新创建,查询到了,和defaults={'token':token})不一样,就更新

 认证类

class Actions(BaseAuthentication):def authenticate(self, request):token = request.query_params.get('token')print(token)user_token = models.UserToken.objects.filter(token=token).first()if user_token:user=user_token.user   # 当前登录用户就是userreturn user, tokenelse:raise AuthenticationFailed('认证不通过')


http://www.ppmy.cn/news/82575.html

相关文章

【降维打击】T分布随机近邻嵌入(T-SNE)Python实践

近几天看到论文里面有T分布随机近邻嵌入(T-distributed stochastic neighbor embedding, T-SNE)这种可视化方法,以前好像也看到过,但没有系统了解过,现有时间正好实践记录一下。 1. T-SNE简介 T-SNE是一种降维方法&am…

外包公司程序员的水平真的很垃圾吗?

在互联网圈存在着这么一条鄙视链:大厂程序员看不起自研小厂程序员,自研小厂程序员看不起外包程序员,很多人觉得自己进了外包以后简历就被污染了,所以哪怕失业都不愿意进外包…… 实际上,何不食肉糜…… 外包可能还把你…

高丰度铈磁体

随着烧结钕铁硼应用领域的不断拓展和产量的快速增长,相应的稀土资源也被大量开采。稀土矿中各种稀土元素是共生的,但在钕铁硼的制备过程中,利用的主要是在轻稀土中质量分数为25%的镨Pr和钕Nd元素,这样对轻稀土中占比为质量分数49%…

asp网站Repuest获取Http网络读卡器刷卡数据Response回应驱动读卡器显示响声

RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) 中文液晶显示http协议网络读卡器是一款能利用现有的计算机网络,不需要独立布线就可以组成一个高性能低成本实时联网ID卡管理系统的端终设备,刷卡后即时向远程计算机传…

苹果手机照片删除怎么恢复

苹果手机照片删除怎么恢复?当你不小心删除了一些重要的照片后,可能会感到不知所措。不过,你不必担心,因为在苹果手机上,这些被误删除的照片并没有完全消失。事实上,这些照片只是被标记为可以被覆盖的数据,…

第二十五节:通信之WLAN(WiFi聚合)

欢迎大家一起学习探讨通信之WLAN。为了减少帧交互中额外资源占用开销,提高WiFi网络系统整体运行效率,802.11n协议引入定义了聚合功能。本节将基于协议定义内容和实例,详细分析“A-MSDU"和“A-MPDU”两种聚合功能。 关键字 S1G(Sub 1 GH…

macbook2023系统清理软件cleanmymac中文版

cleanmymac x 中文版基本都是大家首选Mac清理软件了。它集各种功能于一身,几乎满足用户所有的清理需求。它可以清理,优化,保养和监测您的电脑,确保您的Mac运行畅通无阻!支持一键快速清理Mac,快速检查并安全…

网络协议 — IPSec 安全隧道协议族

目录 文章目录 目录IPSec 安全隧道协议族封装协议Authentication HeaderEncapsulating Security Payload 封装模式传输模式隧道模式 安全偶联协商Security AssociationInternet Key ExchangeIKE 的交换过程 IPSec Virtual Private NetworkIPSec NAT-TTransport 模式Tunnel 模式…