Django - DRF - BaseAuthentication 认证组件

目录

一、BaseAuthentication - 用于拦截请求,在视图函数钱执行相应认证方法

1-1 登陆相关视图函数 - 使用Token字符串存储数据库模拟session

1-2 BaseAuthentication 登陆认证 - drfAuth.py

1-3 视图函数

二、认证配置 - authentication_classes

2-1 局部配置

2-2 全局配置 及 局部禁用

三、相关源码分析


一、BaseAuthentication - 用于拦截请求,在视图函数钱执行相应认证方法

总结:

  • 认证类
    • 认证类必须单独存放在py文件内,若防止在view内,使用全局配置时候,无法使用
    • 必须继承 BaseAuthentication
      • from rest_framework.authentication import BaseAuthentication
    • 认证类内必须重写 authenticate(self, request) 方法,request参数必须传入
    • 若后续有其他认证类需要执行,必须返回空!!
    • 若后续不无其他认证类需要执行,则返回两个值 - 对应DRF内Request对象User类内_authenticate方法执行
    • 认证失败,抛出  exceptions.APIException 异常 
      • from rest_framework import exceptions
  • 执行认证的视图类中配置 authentication_classes = [drfAuth.LoginAuth, ]

1-1 登陆相关视图函数 - 使用Token字符串存储数据库模拟session

from rest_framework.views import APIView
import hashlib, time
from app01 import models
from django.core.exceptions import ObjectDoesNotExist
from django.http import JsonResponse



def get_token(name):
    '''
    将当前时间戳转化为被hash的md5字符串
        - 注意:md5.update(内部必须插入bytes格式)
    :param name:
    :return:
    '''
    md5 = hashlib.md5()
    md5.update(str(time.time()).encode('utf-8'))
    md5.update(name.encode('utf-8'))
    return md5.hexdig
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值