c#生成token访问的接口_python测试开发django60.token登录(TokenAuthentication)
前言
现在很多接口项目在登录的时候返回一个token,登录后的拿着这个token去访问访问登录之后的请求。
本篇使用djangorestframework框架写一个登陆的接口,登录成功后返回token。
环境准备:
python 3.6
django 2.1.2
TokenAuthentication
django rest framework权限和认证有四种方式:
BasicAuthentication 此身份验证方案使用HTTP基本身份验证,根据用户的用户名和密码进行签名。
基本身份验证通常仅适用于测试
TokenAuthentication 此身份验证方案使用基于令牌的简单HTTP身份验证方案。
令牌认证适用于客户端 - 服务器设置,例如本机桌面和移动客户端。
SessionAuthentication 此身份验证方案使用Django的默认会话后端进行身份验证。
会话身份验证适用于与您的网站在同一会话上下文中运行的AJAX客户端。
RemoteUserAuthentication 此身份验证方案允许您将身份验证委派给Web服务器,该服务器设置REMOTE_USER 环境变量。
本篇讲TokenAuthentication这种认证方式,先安装对应的模块
pip install djangorestframework
在setting.py中加入配置参数
INSTALLED_APPS = ( ... 'rest_framework', 'rest_framework.authtoken',)
添加REST_FRAMEWORK项,rest_framework.authentication.TokenAuthentication
上面说的第三种token认证的方式。
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.TokenAuthentication', # token认证 )}
同步数据库,生成authtoken_token表
python manage.py migrate
执行完成后,数据库里面就会多一张authtoken_token表
登录生成token案例
登录可以直接用django自带的User表,所以不需要重新设计表了,登录的账号就是User表的数据,先准备几个登录的账号,比如我的登录账号是test,密码是123456
views.py编辑登录的视图函数
# views.pyfrom django.shortcuts import renderfrom django.http import JsonResponsefrom django.shortcuts import HttpResponsefrom rest_framework.authtoken.models import Tokenfrom django.contrib import authfrom rest_framework.views import APIView
# 作者:上海-悠悠,QQ交流群:750815713
class LoginViewSet(APIView): '''登录方法'''
def post(self, request, *args, **kwargs): username = request.data.get('username') password = request.data.get('password') user = auth.authenticate(username=username, password=password) if not user: return HttpResponse({"code": 0, "msg": "用户名或密码不对!"}) # 删除原有的Token old_token = Token.objects.filter(user=user) old_token.delete() # 创建新的Token token = Token.objects.create(user=user) return JsonResponse({"code": 0, "msg": "login success!", "username": user.username, "token": token.key})
urls.py设置访问地址
# urls.pyfrom apiapp import viewsfrom django.conf.urls import url
# 作者:上海悠悠,QQ交流群:750815713
urlpatterns = [ url(r'^api/v1/login/$', views.LoginViewSet.as_view()),]
测试登录获取token
接着测试登录返回token的接口,使用post请求,请求类型Content-Type: application/json
测试结果
登录成功后,token会写入authtoken_token表里面
其它的接口需要登录之后才能访问,也就是token用户认证下篇再讲
c#生成token访问的接口_python测试开发django60.token登录(TokenAuthentication)相关推荐
- c++ websocket客户端_python测试开发django81.dwebsocket实现websocket
前言 HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息. WebSocket 协议它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是 ...
- ajax get请求_python测试开发django50.jquery发送Ajax请求(get)
前言 有时候,我们希望点击页面上的某个按钮后,不刷新整个页面,给后台发送一个请求过去,请求到数据后填充到html上,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.Ajax可以完美的 ...
- python开发面试题目_Python测试开发面试笔试题
Python 测试开发面试笔试题 一,中文单项选择题(30 分,每个 3 分) 1.下列哪个语句在 Python 中是非法的? A.x = y = z = 1 B.x = (y = z + 1) C. ...
- token 微信access 过期_微信开发ACCESS TOKEN 过期失效解决方案
微信开发-ACCESS TOKEN 过期失效解决方案 起因:因为access_token的重要性,开发过微信的都知道,但是他有自己的生命周期,官方解释为:"有效期为7200秒",一 ...
- feign调用多个服务_spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)...
1.首先先看什么是Feign. 2.若其他服务的接口未做权限处理,参照上文第1点的博文即可. 3.若其他服务的接口做了权限的处理(例如OAuth 2)时该如何访问? a.有做权限处理的服务接口直接调用 ...
- select三级联动 怎么删除前一个的_python测试开发django57.xadmin选项二级联动
前言 当我们选择项目分类的时候,一个项目下关联多个模块,同时有这两个选项框的时候,需要实现选中一个项目,模块里面自动删除出该项目下的模块,如下图这种 解决基本思路: 1.写个jqeury脚本监听cha ...
- python测试开发面试题_python测试开发面试之深浅拷贝
先来道题热热身 a = ('a', 'b','c') c = copy.copy(a) d = copy.deepcopy(a) if c == d: print("c和d的值相等" ...
- python 怎么把 写好的代码 放到服务器执行_python测试开发django(1)--开始Hello World! - 星空6...
前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pytho ...
- hikaridatasource 加密后登陆不上_python测试开发django42.auth模块登陆认证
前言 在开发一个网站时,经常会用到用户的注册和登陆相关的账号管理功能,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. 像用户注册.用户登录.用户认证.注销 ...
最新文章
- 2021年春季学期-信号与系统-第七次作业参考答案-第六小题
- 编程之美-阶乘方法整理
- Java 中的四种引用及垃圾回收策略
- 论文盘点:基于图卷积GNN的多目标跟踪算法解析
- 【Luogu】【关卡2-2】交叉模拟(2017年10月)
- android旋转动画和平移动画具体解释,补充说一下假设制作gif动画放到csdn博客上...
- 博士生找工作的真相!就问一声:你是否足够强大?
- DML和DQL 总结
- 解决办法:cv::randn(cv::_InputOutputArray const, cv::_InputArray const, cv::_InputArray const)’未定义的引用
- 【C语言】之冒泡排序法(详解)
- traceroute、tracert服务的工作原理
- python tkinter 窗口 隐藏 显示_【Python GUI】隐藏窗体和弹窗窗体的探索
- myeclipse项目导入eclipse在Web项目下的WebRoot和WebContent
- 一个简单移动页面ionic打包成app
- DES算法的介绍和实现(转的,其实3des一样的原理就是加密解密加密而已)
- 两个字符串的最长公共子串(C++)
- 如何在 Excel 图表中添加或删除次坐标轴?
- 【技术干货】跨境茶话会第4期丨响应式编程的应用
- 解决vscode红色波浪线的ts报错:找不到模块“store” ts(2307),不识别@别名路径
- shell在xcode中涉及到的关键字
热门文章
- .net core websocket
- 存储管理工具StorageExplorer的基本使用
- 170308、oracle查看被锁的表和解锁
- 单调队列练习之广告印刷
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
- 执行sql报错:Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in
- static用法报错解决:cannot declare member function to have static linkage [-fpermissive]
- Android Studio禁止混淆JNI代码
- Android写log到文件模版
- Android系统Audio框架介绍(一)