REST Framework 的用户认证组件
用户认证流程:
我们要知道这个流程是怎么走的? 认证之后做的什么? 怎么认证?这三个条件
认证流程:就是使用BaseAuthentication这个模块来做认证,判断你登陆成功传递过来的随机字符串是否存在
怎么认证: 如果存在就让程序继续下去 然后返回一个两个参数的元组 认证之后 你以后的登陆用户的username或者其他需要获取的数据就从你返回的那个带有两个参数的元组中取出来,因为下民我们需要你返回的信息的时候
只能是登陆成功后才能使用 所以只有登陆成功后才能继续下面的流程
其实用户认证就是做了一个全局的认证
首先我们要导入两个模块
from rest_framework.authentication import BaseAuthentication # 这个是限制用户的信息 就是你验证的时候必须要写它里面的方法不然它的方法是返回错误的 所以你 必须要重写 它的方法
from rest_framework.exceptions import AuthenticationFailed # 这个是你的用户认证出错的时候返回额错误信息 和上面的BaseAuthentication 是一起匹配的
BaseAuthentication 内部只是写一个一个方法 这个方法是限制我们必须重写 则会个方法的 如果不重写的话就会抛出一个错误

它规定我们只能写这个方法 必须写不写就抛出错误 然后我们再返回的也必须是元组 然后元组的里面含有两个值 并且对应的取值是rquest.user,和reques.auth
from rest_framework.authentication import BaseAuthentication # 这个是限制用户的信息 就是你验证的时候必须要写它里面的方法不然它的方法是返回错误的 所以你 必须要重写 它的方法
from rest_framework.exceptions import AuthenticationFailed # 这个事你的用户认证出错的时候返回额错误信息 和上面的BaseAuthentication 是一起匹配的 from app01 import models
class LuffcityAuththentication(BaseAuthentication): # 然后继承这个模块 def authenticate(self,request):
'''
用户认证
:param self:
:param request:
:return:
'''
token = request.query_params.get("token") # 1、你的事个体请求必须从query.params中取值 2、这个事对你的携带的token值给取出来方便下面的判断 因为这个字符串是你的浏览器访问的时候携带的所以就用get请求获取的方式来得到信息
token_obj = models.UserToken.objects.filter(token = token).first()
if not token_obj: # 如果没有这个token或者错误
raise AuthenticationFailed({"code":88,"data":"登陆失败"})
# 验证成功
return (token_obj.user,token_obj) #返回的是一个元组 必须是一个元组里面两个元素 返回的是对象名和对象本身 方便后面的取值
你认证的时候如果是前后端分离的项目 最好是定的 随机字符串来充当cookie这样有助于取值,如果是用cooike获取session你的逻辑就会很麻烦 所以就尽量使用随机字符串来定义你的验证信息
随机字符串 用uuid
REST Framework 的用户认证组件的更多相关文章
- web框架开发-Django用户认证组件
可以用认证组件做什么 针对session的缺陷, 跟新数据时,不跟新key键, 用户认证组件是删除后再重建 用户认证组件很多功能可以直接使用 利用用户认证表(auth_user,通过Django自己创 ...
- django - 总结 - 用户认证组件
用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...
- python 全栈开发,Day79(Django的用户认证组件,分页器)
一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...
- 10.Django用户认证组件
用户认证组件: 功能:用session记录登录验证状态: 前提:用户表,django自带的auth_user 创建超级用户:python manage.py createsuperuser ...
- Django用户认证组件
用户认证 主要分两部分: 1.auth模块 from django.contrib import auth 2.User对象 from django.contrib.auth.models imp ...
- django的用户认证组件
DataSource:https://www.cnblogs.com/yuanchenqi/articles/9064397.html 代码总结: 用户认证组件: 功能:用session记录登录验证状 ...
- 06 django的用户认证组件
1.用户认证组件 用户认证组件: 功能:用session记录登录验证状态 前提:用户表:django自带的auth_user 创建超级用户: python3 manage.py createsuper ...
- 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)
1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...
- Django组件 - cookie、session、用户认证组件
一.cookie 1.会话跟踪技术 1)什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话 ...
随机推荐
- 自己动手实现一个WEB服务器
自己动手实现一个 Web Server 项目背景 最近在重温WEB服务器的相关机制和原理,为了方便记忆和理解,就尝试自己用Java写一个简化的WEB SERVER的实现,功能简单,简化了常规服务器的大 ...
- Ruby语言学习系列--String 类函数
函数名称 说明 示例 * 将字符串拷贝N次 “ha”*4 >> “hahahaha” + << concat 连接字符串 “yes” + “no” >& ...
- VUE脚手架,babel转码 常用命令
vue-cli脚手架,单页面应用初始化时 npm -v 查看npm版本号 npm install vue-cli -g 全局安装vue-cli vue -V查看vue版本号,说明vue-cli已经安 ...
- How系列-公网如何ssh到内网的Linux系统中?
起因 最近碰到一件事:B同学在他电脑的Ubuntu虚拟机中学习搭建服务器碰到了问题,要我帮他看下.我总不能一个QQ远程桌面连过去,那样操作会卡到崩溃.ssh过去是最好的方法,不过他的电脑跟我不在一个局 ...
- springboots Helloworld
1.eclipse gradle 插件 HELP----MarketPlace----搜索 buildship点击安装 WINDOW----preferences--gradle 配置安装好的grad ...
- 阿里云Maven仓库
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexu ...
- lombok入门
pom.xml加入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...
- 第三节:我的第一个Java程序
一.编写我的第一个Java程序流程: 1.新建一个文本文档:在电脑任意位置“右击”----->选择“新建”----->选择“文本文档”: 2.修改文档名与后缀名:“右击”新建的文本文档-- ...
- JSON.stringify时间的问题
使用Element UI控件el-date-picker后台传值用到JSON.stringify转换字符串传后台发现输出国际标准时间(ISO),减少了8个小时, 解决方式: 由于JSON.string ...
- HTML5新增的form属性简介——张鑫旭
一.引言 HTML5中新增了一个名为form的属性,是一个与处理表单相关的元素. 在HTML4或XHTML中,我们要提交一个表单,必须把相关的控件元素都放在<form>元素下.因为表单提交 ...