用户认证流程:

  我们要知道这个流程是怎么走的? 认证之后做的什么? 怎么认证?这三个条件

  

认证流程:就是使用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

最新文章

  1. Python 学习第十九天 django知识
  2. Xcode 编译的哪些错误
  3. windows下mongodb安装与使用整理
  4. C++ 学习笔记(2) —— float 和 double 的精度
  5. 关于SoCFPGA 编译问答
  6. jquery时间倒计时
  7. 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
  8. 关于KeilC51的指针(参见, page 106-113, keil uv2 user's guide 09,2001)
  9. Oracle over函数学习
  10. Java面向对象 其他对象
  11. 时间戳转换成时间js(年-月-日,例如“2017-04-22”)
  12. 对Jpa中Entity关系映射中mappedBy的理解
  13. jQueryEasyUI应用 – datagrid之CRUD应用
  14. reactjs-swiper react轮播图组件基于swiper
  15. ROS学习笔记(一) : 入门之基本概念
  16. idea取消参数名称(形参名)提示
  17. Jenkins 踩过的坑之再总结
  18. Maven依赖的Scope去除部署不需要的jar 包(打包)
  19. C++ 类成员的构造和析构顺序
  20. Administrator privileges required for OLE Remote Procedure Call debugging: this feature will not work..

热门文章

  1. 使用epublib解析epub文件(章节内容、书籍菜单)
  2. ls命令显示的total你知道代表着什么吗?
  3. C++对象的内存布局以及虚函数表和虚基表
  4. onkeydown事件
  5. 资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】
  6. [转]SQL Server 2008- Get table constraints
  7. python26:自定义form表单验证
  8. 傻瓜式解读koa中间件处理模块koa-compose
  9. WPF备忘录(7)WPF图片资源路径介绍
  10. nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引