flask_jwt应用代码:

from flask import Flask
from flask_jwt import JWT,jwt_required,current_identity
from werkzeug.security import safe_str_cmp
import json class User(object):
def __init__(self,id,username,password):
self.id = id
self.username = username
self.password = password def __str__(self):
return "User(id='%s')"% self.id users = [
User(1,'user1','abcxyz'),
User(2,'user2','abcxyz'),
]
username_table = {u.username: u for u in users}
userid_table = {u.id: u for u in users} def authenticate(username,password):
user = username_table.get(username, None)
if user and safe_str_cmp(user.password.encode('utf-8'),password.encode('utf-8')):
return user def identity(payload):
user_id = payload['identity']
return userid_table.get(user_id, None) app = Flask(__name__)
app.debug = True
app.config['SECRET_KEY'] = 'super-secret' jwt = JWT(app, authenticate, identity) @app.route('/protected')
@jwt_required()
def protected():
print "this protected is successed!!!"
return '%s' % current_identity if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000)

应用代码主要是根据官方文档来的

发送post请求(也可以用浏览器插件如postman来,但是我自己的用了插件总是报401错误,所以自己写请求试)

import requests
headers={
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip,deflate, lzma, sdch",
"Accept-Language": "zh-CN,zh;q=0.8",
"Content-Type": "application/json",
"Connection": "keep-alive",
"Host": "localhost:5000",
"pgrade-Insecure-Requests": "",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36 OPR/33.0.1990.43"
}
data = {
"username":"user1",
"password":"abcxyz"
}
url = 'http://127.0.0.1:5000/auth'
r = requests.post(url,data=data) print r.json()

这个是发送请求,打印出返回的access-token

应该请求:

import requests
headers={
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip,deflate, lzma, sdch",
"Accept-Language": "zh-CN,zh;q=0.8",
"Content-Type": "application/json",
"Connection": "keep-alive",
"Host": "localhost:5000",
"pgrade-Insecure-Requests": "1",
"Authorization": u"JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNTE1NjYzNzY2LCJuYmYiOjE1MTU2NjM3NjYsImV4cCI6MTUxNTY2NDA2Nn0.2Ij36x46dfPLnAWGcdJDc-mC0GO6Q6EcMGul7YE3my4", #应用请求到的token信息
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36 OPR/33.0.1990.43"
}
data = {
"username":"user1",
"password":"abcxyz"
}
url = 'http://127.0.0.1:5000/protected'
r = requests.get(url,headers=headers,data=data) #请求时,需要加headers,请求方法可以自己定义,但是官方文档上protected路径的请求方法好像默认为get,在定义时改为post方法,并在此处发post请求时,依然报405错误 print r.json()

会在服务端看到200的状态码,请求成功

总结:当然这个学习过程也不是一帆风顺的,例如

发送请求之后,一直报“”nonetype“”错误,说对象没有get属性,
经过排查发现,是获取到请求数据为空,然后自己在源码上修改为data=request.form.to_dict()
直接将请求的数据获取到,然后才请求成功生成access-token。

当然这个过程是实现了,,,但是还有很多的疑问没有弄的非常清楚,在问光耀问题的时候,
听光耀说,这个是因为自己对HTTP的基本原理不熟悉,还需要加强这一块的基础知识。所以今天特意买了书
希望能补上自己这块的不足之处。

flask验证登录学习过程(1)---实践flask_jwt的更多相关文章

  1. flask验证登录学习过程(1)---准备

    对应flask的接口开发,目前自己可以熟练的进行.但是深入到更基础的,从注册到验证登录的过程一直不是特别清楚. 趁着年度不是特别忙的时候,特意去学习加强一下.把这个过程记录在此处. 首先是规划一个项目 ...

  2. python验证登录

    一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢 这里我们使用装饰器来做登录验证 网站构成 假设我们有这样一个网站,是一个类似与博客园这种多个用 ...

  3. Oracle查询银行卡数、修改余额及验证登录

    建立Oracle表 create table T_BANKCARD ( card_id VARCHAR2(20) not null, user_id VARCHAR2(20) not null, us ...

  4. thinkphp通行证服务,验证登录,注销登录

    <?php /** * 通行证服务 */ class PassportService extends Service { /** * 验证用户或者管理员是否已登录 * @return boole ...

  5. 一步一步实现FormsAuthentic验证登录

    本文不讲原理,只讲用法,原理性的东西网上特别多,不过还是会对一些要用到的东西进行解释,不深入讲原理.本文中用的是Vs2012   .net mvc 4.0.原理看这篇文章,看完这个文章绝对受益匪浅. ...

  6. JAVA短信验证登录

    短信验证登陆 1.点击触发,以电话号码为参数调用发送验证登录短信方法 2.默认模板为验证模板 生成6位验证码 3.将生成的验证码和手机号码放入缓存,(已经设置好缓存存放时间) 4.调用发送模板短信方法 ...

  7. Scrapy中使用cookie免于验证登录和模拟登录

    Scrapy中使用cookie免于验证登录和模拟登录 引言 python爬虫我认为最困难的问题一个是ip代理,另外一个就是模拟登录了,更操蛋的就是模拟登录了之后还有验证码,真的是不让人省心,不过既然有 ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录

    壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...

  9. JSP+MySQL验证登录的实现方式

    用IDEA连接MySQL验证登录实现方式核心部分代码 用setString的方法对从数据库中的提取的信息经行比对: try { Class.forName("com.mysql.jdbc.D ...

随机推荐

  1. 在linux系统中用docker搭建ss

    首先呢,你的先有一台自己的服务器把,这个就不多赘述了,我自己买了一台国外的VPS. 一.docker的安装 首先我们来看下服务器的版本信息: cat /etc/redhat-release //Cen ...

  2. prometheus监控redis

    下载redis_exporter插件 代理插件不一定非要安装在redis端 wget https://github.com/oliver006/redis_exporter/releases/down ...

  3. LNMP web服务的安装

    第1章 安装Nginx 环境: 系统:CentOS6.5 软件:nginx-1.6.3     mysql-5.5.49    php-5.5.32 1.1 Nginx官网 http://nginx. ...

  4. laravel5.5源码笔记(四、路由)

    今天这篇博文来探索一下laravel的路由.在第一篇讲laravel入口文件的博文里,我们就提到过laravel的路由是在application对象的初始化阶段,通过provider来加载的.这个路由 ...

  5. 微信小程序 微信支付

    微信小程序前端自处理: //时间戳 timeStamp() { return parseInt(new Date().getTime() / 1000) + '' }, //随机数 randomStr ...

  6. Ajax的跨域请求——JSONP的使用

    一.什么叫跨域 域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议.域名.端口有任何一个不同,都被当作是不同的域. 总而言之,同源策略规定,浏览器的ajax只能访问跟它的HTML页面同源( ...

  7. 20155215宣言 2006-2007-2 《Java程序设计》第1周学习总结

    20155215宣言 2006-2007-2 <Java程序设计>第1周学习总结 考核方式 翻转课堂考核12次(5*12=60):每次考试20-30道题目,考试成绩规格化成5分(比如总分2 ...

  8. 20155231 实验三 敏捷开发与XP实践

    20155231 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器&g ...

  9. 20155308 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计

    20155308 2016-2017-2 <Java程序设计>实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UM ...

  10. thinkphp 去除空格