【DRF认证】】的更多相关文章

DRF 认证.权限.限制   认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class UserInfo(models.Model): username = models.CharField(max_length=16,unique=True) password = models.CharField(max_length=32) type = models.SmallIntegerFi…
昨日内容回顾 1. 五个葫芦娃和三行代码 APIView(views.View) 1. 封装了Django的request - request.query_params --> 取URL中的参数 - request.data --> 取POST和PUT请求中的数据 2. 重写了View中的dispatch方法 dispatch方法 通用类(generics) GenericAPIView - queryset - serializer_class 混合类(mixins) - ListModel…
一.Token 认证的来龙去脉 摘要 Token 是在服务端产生的.如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端可以在每次请求的时候带上 Token 证明自己的合法地位 为什么要用 Token? 要回答这个问题很简单——因为它能解决问题! 可以解决哪些问题呢? Token 完全由应用管理,所以它可以避开同源策略 Token 可以避免 CSRF 攻击 Token 可以是无状态的,可以在多个服务间共享 Token 是在服务端产生的.如果前端使…
drf(django rest-framework)认证组件 复习 HyperlinkedIdentityField ​```python 功能:快速生成连接 1. publish = serializers.HyperlinkedIdentityField(view_name='ttt', lookup_field='publish_id', lookup_url_kwarg='pkk') view_name:路由的别名,look_up_field:根据表的哪个字段,来拼路径 lookup_u…
目录 认证组件的详细用法 本文详细讲述了DRF认证组件的原理以及用法. @ * 源码剖析** 上一篇博客讲解DRF版本的时候我们都知道了,在dispatch方法里执行了initial方法来初始化我们的版本. 而在initial方法里有我们的认证.权限.频率组件,如下图: 我们再点进去认证组件看看: 可以看到,我们的权限组件返回的是request.user,那么这里返回的request是新的还是旧的呢? initial方法是在request重新赋值之后执行的,所以我们这里的request是新的--…
目录 一.注册接口 urls.py views.py serializers.py 二.登录接口 三.用户中心接口(权限校验) urls.py views.py serializers.py 四.图书资源接口 urls.py views.py serializers.py 五.认证组件 重点 自定义认证类 六.权限组件 重点 自定义权限类 七.jwt认证示意图 八. jwt认证算法:签发与校验 签发:根据登录请求提交来的 账号 + 密码 + 设备信息 签发 token 校验:根据客户端带toke…
1.DRF认证组件之视图注册用法(自定义简单使用) settings.py配置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', 're…
因为接下来的功能中需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py createsuperuser 创建管理员以后,访问admin站点,先修改站点的语言配置 settings.py 访问admin 站点效果: 一. 认证Authentication 可以在配置文件中配置全局默认的认证方案 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.a…
认证Authentication 准备工作:(需要结合权限用) 1. 需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py createsuperuser 2. 配置  settings.py 1.站点语言配置: # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # 配置中文 开始认证Authentication 配置文件: (1)可以在配置文件中配置全局默认的认证方案: REST…
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…
目录 一.注册接口 urls.py views.py serializers.py 二.登录接口 三.用户中心接口(权限校验) urls.py views.py serializers.py 四.图书资源接口 urls.py views.py serializers.py 五.认证组件 重点 自定义认证类 六.权限组件 重点 自定义权限类 七.jwt认证示意图 八. jwt认证算法:签发与校验 签发:根据登录请求提交来的 账号 + 密码 + 设备信息 签发 token 校验:根据客户端带toke…
认证校验 认证校验是十分重要的,如用户如果不登陆就不能访问某些接口. 再比如用户不登陆就不能够对一个接口做哪些操作. drf中认证的写法流程如下: 1.写一个类,继承BaseAuthentication,并且覆写其authenticate方法 2.当认证通过后应该返回两个值,并且第一个值会传递给request.user这个属性中,第二个值将会传递给request.auth这个属性中 3.如果认证失败,则抛出异常APIException或者AuthenticationFailed,它会自动捕获并返…
认证Authentication(5星) 认证逻辑及编写步骤 逻辑 认证类:用来校验用户是否登录,如果登录了,继续往下走,如果没有登录,直接返回 编写步骤 -第一步:写一个类,继承BaseAuthentication,重写authenticate,在方法中做校验,校验是否登录,返回两个值,没有登录抛…
视图函数中加上认证功能,流程见下图 import hashlib import time def get_random(name): md = hashlib.md5() md.update(bytes(str(time.time()),encoding='utf-8')) md.update(bytes(name,encoding='utf-8')) return md.hexdigest() from rest_framework.views import APIView class Log…
认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判断是否登录过 如果登录过,返回两个值 user对象 ,token对象(或者其他自定义的对象) 如果没有登录过抛异常 from rest_framework.authentication import BaseAuthentication from app01 import models from r…
源码分析 """ 1)APIView的dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户 - 游客.合法用户.非法用户 # 游客:代表校验通过,直接进入下一步校验(权限校验) # 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常…
2.1 user/urls.py   ModelViewSet注册路由三部曲 from django.urls import include, path from user import views from rest_framework.routers import SimpleRouter, DefaultRouter   # 自动生成路由方法, 必须使用视图集 # router = SimpleRouter() # 没有根路由 /user/ 无法识别 router = DefaultRou…
Django rest framework 认证: 作用:验证用户是否登录 在视图类中写上authentication_classes = [ ],这是一个列表 需要实现 authenticate() 方法 应用 自定义验证 import jwt from rest_framework import exceptions from rest_framework.authentication import BaseAuthentication from rest_framework_jwt.set…
补充: 一.django中间件之路由斜杠的自动添加源码 其实我们每次在写路由的时候,如果在路由层给他设置的是加/,但实际上我们在浏览器中输入的时候并没有加/发现也能调用,前面说了是浏览器内部走了重定向,所以会自动的给我们加上/匹配,但是难道我们就不好奇究竟是谁让他内部走了重定向吗? 想想,它在第一次来的时候没有匹配上路由就会直接重定向,那他肯定是还没走到视图层,在想一想django的请求生命周期,来了请求之后,进入django内部是不是要先经过什么?好像是中间件!!那就必然和中间件有某种关系,然…
一.引入 通过前面三节课的学习,我们已经详细了解了DRF提供的几个重要的工具,DRF充分利用了面向对象编程的思想,对Django的View类进行了继承,并封装了其as_view方法和dispatch方法,随后提供了几个非常方便的编程工具,比如解析器.序列化. 我们通过解析器,可以对来自客户端的application/json数据进行解析,另外,通过序列化工具,我们能够快速构建一套符合REST规范的api,随后又通过DRF的mixin.view及viewset对这些接口逻辑进行优化. 有了他们,程…
概要 retrieve方法源码剖析 认证组件的使用方式及源码剖析 权限组件的使用方式及源码剖析 频率组件的使用方式及源码剖析 知识点复习回顾 Python逻辑运算 知识点复习回顾一:Python逻辑运算 有了前两天的基础,今天看源码我们就没有那么大的压力了,所要复习的知识也仅仅只有一个,那就是Python的逻辑运算,当然,稍后还会有几个简单的知识点,就不单独拿出来复习了. 什么是逻辑运算呢?就是and.or.not.not为取反,比较简单,而and和or表示通过运算,计算表达式的布尔值,判断最终…
drf认证组件 用户信息表 from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): mobile = models.CharField(max_length=11,unique=True) class Meta: db_table = 'user' verbose_name = '用户表' verbose_name_plural = ver…
一.drf认证功能 二.token讲解 三.局部钩子源码分析 一.drf认证功能 1.认证简介: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录则不能查看.这时候需要用到认证组件 2.局部使用 models层 class User(models.Model): name = models.CharField(max_length=32) password = models.CharField(max_length=32) class UserTok…
目录 一.路由 1 没有继承视图集的视图类 2 继承了视图集的视图类 3 继承自ModelViewSet的路由写法(自动生成) 二.认证 1 drf认证的源码分析 2 自定义认证类的使用 一.路由 三种路由配置 1 没有继承视图集的视图类 # urls.py path('books4/', views.Book4View.as_view()), re_path('books4/(?P<pk>\d+)', views.Book4DetailView.as_view()) 2 继承了视图集的视图类…
django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) django rest framework 之 版本(四) django rest framework 之 解析器(五) django rest framework 之 序列化(六) django rest framework 之 分页(七) django rest f…
目录 权限的详细用法 我们都听过权限,那么权限到底是做什么的呢. 我们都有博客,或者去一些论坛,一定知道管理员这个角色, 比如我们申请博客的时候,一定要向管理员申请,也就是说管理员会有一些特殊的权利,是我们没有的. ==这些对某件事情决策的范围和程度,我们叫做权限==,权限是我们在项目开发中经常用到的. 本文将详细讲述DRF框架为我们提供的权限组件的使用方法. @ * 源码剖析** DRF的版本控制.认证.权限.频率组件都在initial方法里初始化. 我们点进去看看: 其实我们版本.认证.权限…
3 restframework-认证 3.1APIView 认证: 认证是否已经登陆,如果已经登陆返回元组,如果没有登陆报错 源码流程: 执行dispatch方法: def dispatch(self, request, *args, **kwargs): #1.封装request 对原生request进行加工,执行initialize_request方法 request = self.initialize_request(request, *args, **kwargs) try: #2.认证…
DRF版本控制 介绍 我们在看APIView源码时可以看到,版本和版本控制类是通过determine_version的返回值获取的 version, scheme = self.determine_version(request, *args, **kwargs) 并且将版本和版本控制类放入了request中,request.versioning_scheme就是控制类的实例化对象 request.version, request.versioning_scheme = version, sch…
目录 三大认证 流程 认证组件 权限组件 频率组件 自定义token的签发 三大认证 流程 由于DRF中, 所有的视图类都要直接和间接继承APIView类, 也只有APIView类中才有dispatch方法, 所以所有的请求都要经过三大认证, 认证通过后执行相应请求的视图函数 def dispatch(self, request, *args, **kwargs): "..." try: # 三大认证 self.initial(request, *args, **kwargs) &qu…