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打个电话 ...
随机推荐
- PTA (Advanced Level) 1021 Deepest Root
Deepest Root A graph which is connected and acyclic can be considered a tree. The hight of the tree ...
- JAVA 导出 Excel, 将Excel下载到本地
昨天说了如何将数据导出成 excel 的两种方式,今天完善一下将 java 导出(文件在服务器)并下载到本地 1. 触发导出 ajax 代码 $.ajax({ type: "POST&quo ...
- 虚拟机安装Linux中常见异常及解决办法
如果接着下去的提示按Test 的话 会出现Unable to read the disc checksum from the primary volume descriptor. This proba ...
- WCF中的异常
一.考虑到安全因素,为了避免将服务端的异常发送给客户端.默认情况下,服务端出现异常会对异常屏蔽处理后,再发送到客户端.所以客户端捕捉到的异常都是同一个FaultException异常. 例如在服 ...
- 远程桌面如何向远程的计算机发送ctrl+alt+del
远程桌面如何向远程的计算机发送ctrl+alt+del ? 可以使用 ctrl+alt+end 组合键代替 ctrl+alt+del 组合键
- 【JavaScript 从零开始】表达式和运算符(1)
原始表达式 最简单的表达式是"原始表达式"(primary expression).JavaScript中的原始表达式包含常量或直接量.关键字和变量. // 常量或直接量 1.23 ...
- 如何利用gulp构建前端自动化
1,使用 gulp.watch 来监听文件自动打包 在上篇文章中,介绍了如何利用webpack来为项目做打包编译等工作,其中介绍到在我们开发的时候,经常改动js,因为我们文件是引用编译后的js文件,若 ...
- static关键字的内存分析
通常情况下,Java把内存分为栈内存.堆内存和方法区 栈内存用来存放一些基本类型的变量和数组(数组也是一种引用类型)及对象的引用变量 堆内存主要是来放置对象的,即我们在程序中new出来的对象. sta ...
- java并发编程的艺术(二)---重排序与volatile、final关键字
本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...
- nginx 错误日志分析
502 1.查看nginx错误日志 tailf /data/log/nginx/error.log // :: [error] #: * recv() failed (: Connection res ...