https://www.django-rest-framework.org/api-guide/authentication/#basicauthentication

1.INSTALLED_APPS

  1. INSTALLED_APPS = (
  2. ...
  3. 'rest_framework.authtoken'
  4. )

2.REST_FRAMEWORK配置

  1. REST_FRAMEWORK = {
  2. # 'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
  3. # 'PAGE_SIZE':2,
  4. 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
  5. 'DEFAULT_AUTHENTICATION_CLASSES': (
  6. 'rest_framework.authentication.BasicAuthentication',
  7. 'rest_framework.authentication.SessionAuthentication',
  8. 'rest_framework.authentication.TokenAuthentication'
  9. )
  10. }

3.migrate生成表

4.创建一个token

  1. import sys
  2. import os
  3.  
  4. pwd = os.path.dirname(os.path.realpath(__file__))
  5. sys.path.append(pwd)
  6. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MxShop.settings')
  7.  
  8. import django
  9. django.setup()
  10.  
  11. from rest_framework.authtoken.models import Token
  12.  
  13. from django.contrib.auth import authenticate
  14. user = authenticate(username='admin',password='admin')
  15. token = Token.objects.create(user=user)
  16. print(token.key)

5.生成oken

6.验证token

可通过request.user查看

PS:Settings.py中的TokenAuthorazition是全局的,我们也可以取消全局,只在徐娅授权的View中添加authorazition

1.取消settings中配置

  1. REST_FRAMEWORK = {
  2. # 'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.PageNumberPagination',
  3. # 'PAGE_SIZE':2,
  4. 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
  5. 'DEFAULT_AUTHENTICATION_CLASSES': (
  6. 'rest_framework.authentication.BasicAuthentication',
  7. 'rest_framework.authentication.SessionAuthentication',
  8. # 'rest_framework.authentication.TokenAuthentication'
  9. )
  10. }

2.在View中配置

  1. class GoodsList(mixins.ListModelMixin,mixins.CreateModelMixin, viewsets.GenericViewSet):
  2. class GoodsPagination(PageNumberPagination):
  3. page_size = 2
  4. page_size_query_param = 'pageSize'
  5. page_query_param = 'p'
  6. max_page_size = 100
  7.  
  8. queryset = Goods.objects.all() # 不能切片后再过滤,例如:Goods.objects.all()[:10]
  9. serializer_class = GoodsSerializer
  10. pagination_class = GoodsPagination
  11. authentication_classes = (TokenAuthentication,)
  12. filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
  13. search_fields = ('=name',) # 文档:https://www.django-rest-framework.org/api-guide/filtering/#searchfilter
  14. ordering_fields = ('name',)
  15. # filter_fields = ('name',) #逗号必加,缺点无法模糊查询
  16. filterset_class = GoodsFilter

django drf Token验证的更多相关文章

  1. Django中csrf token验证原理

    我多年没维护的博客园,有一篇初学Django时的笔记,记录了关于django-csrftoekn使用笔记,当时几乎是照抄官网的使用示例,后来工作全是用的flask.博客园也没有维护.直到我的博客收到了 ...

  2. Django中csrf_token验证原理

    我多年没维护的博客园,有一篇初学Django时的笔记,记录了关于django-csrftoekn使用笔记,当时几乎是照抄官网的使用示例,后来工作全是用的flask.博客园也没有维护.直到我的博客收到了 ...

  3. Django restframework之Token验证的缺陷及jwt的简单使用

    一.主要缺陷: 1.Token验证是放在一张表中,即authtoken_token中,key没有失效时间,永久有效,一旦泄露,后果不可想象,安全性极差. 2.不利于分布式部署或多个系统使用一套验证,a ...

  4. 【Python】Django【邮箱验证】 后端验证如何生成 token加密验证码 与如何解码!!!!

    1.生成token验证码方案   ,使用itsdangerous    大宝剑, 可以序列化出验证码,并能设置过期时间 安装 itsdangerous pip install itsdangerous ...

  5. Django drf:认证及组件、token、局部钩子源码分析

    一.drf认证功能 二.token讲解 三.局部钩子源码分析 一.drf认证功能 1.认证简介: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录则不能查 ...

  6. 解决Django + DRF:403 FORBIDDEN:CSRF令牌丢失或不正确,{"detail":"CSRF Failed: CSRF cookie not set."}

    我有一个Android客户端应用程序尝试使用Django + DRF后端进行身份验证.但是,当我尝试登录时,我收到以下响应: 403: CSRF Failed: CSRF token missing ...

  7. 服务器通过微信公众号Token验证测试的代码(Python版)

    我在阿里云租了一个云服务器,然后想把这个作为我的微信公众号的后台,启用微信公众号开发者需要正确的响应微信服务器的Token验证,为此把这个验证的Python代码贴出来,只要在服务器上运行这段代码,注意 ...

  8. php开发公众号 token验证失败 其中一个原因

    断断续续,弄了好几天,索性一狠心花了三个小时,总算找出问题了. "token验证失败" 可能原因有很多种,其他网友已经几乎穷尽了,但是我所遇到的在网络上没有看到,所以这里记录下. ...

  9. .NET 微信Token验证和消息接收和回复

    public class wxXmlModel { public string ToUserName { get; set; } public string FromUserName { get; s ...

随机推荐

  1. PDF预览之PDFObject.js总结

    get from:PDF预览之PDFObject.js总结   PDFObject.js - 将PDF嵌入到一个div内,而不是占据整个页面(要求浏览器支持显示PDF,不支持,可配置PDF.js来实现 ...

  2. PG覆盖率检查

    覆盖率检查 需要gcov和lcov工具,gcov在gcc中自带,lcov需要自行下载安装 重新编译 ./configure --prefix=`pwd`/install --with-perl --w ...

  3. django2.0实现数据详情页展示的流程

    思路整理 1 先在urls.py中,定义路由获取的格式 url(r'^detail/(\d+)/$', views.blog_detail), 2 然后在views.py,定义数据获取的方法 def ...

  4. 关于FastCgi与PHP-fpm之间是个什么样的关系【转自知乎】

    刚开始对这个问题我也挺纠结的,看了<HTTP权威指南>后,感觉清晰了不少. 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. ...

  5. Mathtype 公式显示方框

    公式编辑器mathtype中一些符号显示方框,如何解决呢?出现这个问题的原因是这是因为windows中的mtextra.ttf(显示为MT Extra (TrueType))字体文件不存在或版本太低, ...

  6. C# 二元一次方程参数求解

    本文记录了关于求直线斜率及纵截距值的简单方法,只是简单的记录下求解思路,最终还需根据具体项目进行优化. 设直线方程式为:y=kx+b 编程思想: 1.代入y1与x1的值,得到:y1=kx1+b 2.代 ...

  7. Information Retrieval

    [Information Retrieval] 1.信息检索/获取(Information Retrieval,简称IR) 是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用 ...

  8. linux sudo 系统环境变量 用户环境变量

    1. sudo就是普通用户临时拥有root的权限.好处在于,大多数时候使用用户自定义的配置,少数情况可以通过sudo实现root权限做事. 故而,需要注意的一点是,在你使用了sudo后,你临时不再是原 ...

  9. Zend Studio使用综述

    1.如何将zend studio 9的默认GBK编码设置为其它编码,例如UTF-8?  选 择window菜单->Preferences->General->Workspace,在界 ...

  10. centos7 搭建svn服务

    linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! ...