用户认证流程:

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

  

认证流程:就是使用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 的用户认证组件的更多相关文章

  1. web框架开发-Django用户认证组件

    可以用认证组件做什么 针对session的缺陷, 跟新数据时,不跟新key键, 用户认证组件是删除后再重建 用户认证组件很多功能可以直接使用 利用用户认证表(auth_user,通过Django自己创 ...

  2. django - 总结 - 用户认证组件

    用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...

  3. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  4. 10.Django用户认证组件

    用户认证组件: 功能:用session记录登录验证状态: 前提:用户表,django自带的auth_user 创建超级用户:python manage.py createsuperuser       ...

  5. Django用户认证组件

    用户认证 主要分两部分: 1.auth模块   from django.contrib import auth 2.User对象 from django.contrib.auth.models imp ...

  6. django的用户认证组件

    DataSource:https://www.cnblogs.com/yuanchenqi/articles/9064397.html 代码总结: 用户认证组件: 功能:用session记录登录验证状 ...

  7. 06 django的用户认证组件

    1.用户认证组件 用户认证组件: 功能:用session记录登录验证状态 前提:用户表:django自带的auth_user 创建超级用户: python3 manage.py createsuper ...

  8. 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)

    1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...

  9. Django组件 - cookie、session、用户认证组件

    一.cookie 1.会话跟踪技术 1)什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话 ...

随机推荐

  1. 使用subgit进行svn迁移至git(branch,tags)

    前言: 最近公司需要将整体项目从svn迁移至gitlab上,经过几天的研究,现记录一下流程 整体思路是进行一次导入: 先通过subgit将svn整个import至本地,在与git上的项目进行合并. 1 ...

  2. 下载Windows版本的Redis

    1.打开官网http://redis.io/点击Download 2.往下拉,找到Windows, 由图片中的文字可以看出Redis项目不正式支持Windows. 但是,Microsoft开放技术小组 ...

  3. C#中给滚动条增加鼠标滚动轮控制事件

    当滚动条的父控件获得焦点时,可以使用鼠标的滚动轮来控制滚动条 public partial class Form1 : Form { public Form1() { InitializeCompon ...

  4. Nodejs学习笔记(九)—与Redis的交互(mranney/node_redis)入门

    简介和安装 redis简介: 开源高性能key-value存储:采用内存中(in-memory)数据集的方式,也可以采用磁盘存储方式(前者性能高,但数据可能丢失,后者正好相反) 支持字符串(strin ...

  5. [转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件

    在ASP.Net中,为了方便表单的验证,提供了验证控件来完成表单输入数据的验证.这些验证控件确实是功能强大,为写表单程序提供了极大的便利.但是,在不熟悉的情况下,经常碰到问题.其中,最常见的是遇到错误 ...

  6. Uploadify火狐出现302错误

    $(function () { var auth = "@(Request.Cookies[FormsAuthentication.FormsCookieName] == null ? st ...

  7. jQuery如何根据元素值删除数组元素

    用到的方法$.inArry(); $.inArray( value, array [, fromIndex ] ) value 任意类型 用于查找的值. array Array类型 指定被查找的数组. ...

  8. [日常] Go语言圣经-命令行参数

    1.编译 go build hello.go 2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中 下载的代码会放在$GOPATH/src/gop ...

  9. nginx 错误日志分析

    502 1.查看nginx错误日志 tailf /data/log/nginx/error.log // :: [error] #: * recv() failed (: Connection res ...

  10. ASP.NET MVC扩展库

    很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...