from flask import Flask
from flask.globals import request
from flask.json import jsonify
from itsdangerous import TimedJSONWebSignatureSerializer as Serializerapp=Flask(__name__)
#私钥
app.config['SECRET_KEY']='LIUBINGZHEISBEST'
#忽略的检查的url
NOT_CHECK_URL=['/login']
#生产token
def create_token(api_user):'''生成token:param api_user:用户id:return: token'''#第一个参数是内部的私钥,这里写在共用的配置信息里了,如果只是测试可以写死#第二个参数是有效期(秒)s = Serializer(app.config["SECRET_KEY"],expires_in=3600)#接收用户id转换与编码token = s.dumps({"id":api_user}).decode("ascii")return token
'''
装饰器模式
def login_required(view_func):@functools.wraps(view_func)def verify_token(*args,**kwargs):try:#在请求头上拿到tokentoken = request.headers["z-token"]except Exception:#没接收的到token,给前端抛出错误#这里的code推荐写一个文件统一管理。这里为了看着直观就先写死了。return jsonify(msg = 'token为空')#解密s = Serializer(app.config["SECRET_KEY"])try:s.loads(token)except Exception:return jsonify(msg = "token已经过期")return view_func(*args,**kwargs)return verify_token
'''
@app.before_request
def login_required():if request.path not in NOT_CHECK_URL:try:token = request.headers["token"]except:return jsonify(msg='给我token啊')s = Serializer(app.config["SECRET_KEY"])try:s.loads(token)except:return jsonify(msg = "你的token我怎么算不出来??")
@app.route('/login',methods=["POST"])
def info():'''POST携带userid来换取token代码省略其他逻辑'''return jsonify({'token':create_token(api_user=request.args.getlist('user_id'))})@app.route('/msg')
def index():'''携带token登陆'''return jsonify(msg='这是队友,进来吧')
if __name__ == "__main__":app.run(debug=1)

获取token

验证

错误

itsdangerous库:https://itsdangerous.palletsprojects.com/en/1.1.x/
其他文章:https://juejin.cn/post/6844903929289932808

NOT_CHECK_URL=['/login']
@app.before_request
def is_login():if request.path not in NOT_CHECK_URL:loginkey=request.args.getlist('key')if loginkey[0]=='allow_code':#连接数据库,如果当前登录态没有过期则什么都不做,否则拦截passelse:return jsonify({'msg':'Invalid login status'})else:pass
@app.before_request
def auth_check():if request.path not in NOT_CHECK_URL:Authorization=request.headers.get('Authorization')if Authorization =='allow_code':#连接数据库,如果当前登录态没有过期则什么都不做,否则拦截return jsonify({'msg':'登陆成功'})else:return jsonify({'msg':'无效状态'})else:pass

before_request

在每一次请求前拦截,对request携带的信息读取判断加工

flask实现token验证相关推荐

  1. FLASK RESTFUL TOKEN用户验证笔记

    笔记1 REST要求无状态,可以理解为没有session,而且session的存储遇到分布式集群的情况就比较难搞,所以对于用户验证目前网上大多数做法是token方式,第一次登录的时候,先提交用户名密码 ...

  2. 干货!flask登录注册token验证接口开发详解

    今天给大家献上登录注册接口开发,是基于token验证的.咱们闲言少叙,进入正题! 首先看一下数据库模型: #pip install passlib from passlib.apps import c ...

  3. vue中axios如何实现token验证

    title: vue中axios如何实现token验证 date: 2018-02-08 17:50:07 tags: [axios,vue] 继上篇实现Auth认证之后,然后每个跳转页面都会在后端验 ...

  4. signature验证/salt验证/token验证的作用

    1.salt验证: salt是随机生成的一串字符,salt验证的作用是将生成的salt与加密的密码密文拼接后再次加密存储  这样可以是存储在数据库中的密码更加安全 2.signature验证: I.将 ...

  5. 如何利用 C# 爬取带 Token 验证的网站数据?

    在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了. 它的大体思路如下: 对文档分词,找出文档中的情感词.否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前 ...

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

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

  7. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  8. 微信token验证失败的解决方法

    微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...

  9. 手动生成token_手动设计简单的Token验证

    简述一下项目中手写的Token验证服务设计过程 PART A 设计校验的哈希算法 这里直接展示整个项目中用到的算法库,其中涉及位运算的可不管 直接应用到的方法是hash(str) 大概流程如下 1.构 ...

最新文章

  1. 9文一览:近期必读微生物组生信论文
  2. [转载]C#模拟键盘鼠标事件-SendKeys
  3. linux的同步与互斥
  4. [推荐算法]ItemCF,基于物品的协同过滤算法
  5. 放弃Python转向Go语言:我们找到了以下9大理由
  6. jq之$(“[href]“)
  7. 工作那些事(三十一)怎样带好一个项目团队
  8. 《WinForm开发系列之控件篇》Item31 MenuStrip(暂无)
  9. DataSet和实体类的相互转换
  10. 阿里云原生资深专家李国强:云原生上云概述
  11. Linux nohup 关闭终端的时候,程序依然能在后台运行( linux重定向及nohup不输出的方法)...
  12. VMware虚拟机和Linux的安装及镜像下载
  13. 为软考准备的论文!!
  14. UE4(虚幻4)基础:免费资源下载(材质/动作/模型/环境/效果/插件)
  15. SSM_config配置springmvc.xml模板
  16. 计算机设备显示黄色感叹号,电脑没声音,设备管理器中声音出现黄色感叹号怎么办?...
  17. uni-app 的 tabBar 图标自制方法
  18. win7计算机高级设置在哪,windows7投屏设置在哪里
  19. 移动端小场景优化方案
  20. 你所不了解的DevOps

热门文章

  1. 传感器数据采样率控制
  2. 如何查询数据库存储过程
  3. 九章算法-面试题总结(算法、强化算法、系统设计高清视频观看)
  4. Pytorch修改模型参数的方法
  5. 别看抢票秘籍!用这款软硬结合的抢票神器
  6. ArcGIS SDE要素桌面软件无法编辑问题
  7. Alpha多样性 Beta多样性
  8. 好妈妈胜过好老师-允许孩子慢点长大
  9. 谷歌模拟器:谷歌浏览器模拟手机调试添加机型
  10. 复 地雷复 坤上震下