[小程序]基于token的权鉴测试

一、服务器配置

        服务器基于flask,需要额外安装flask_jwt_extended

from flask import Flask        #导入Flask包
from flask import request
from flask import jsonify      #用来返回json消息
from flask_jwt_extended import create_access_token, jwt_required, JWTManager, get_jwt_identity  #权鉴相关
app.config['JWT_SECRET_KEY'] = 'super-secret'   #初始化密钥
jwt = JWTManager(app)users = {'admin': '123',
}

        定义一个POST接口供小程序端获取token 

@app.route('/login', methods=['POST'])
def login():account = request.json.get('account', None)psw = request.json.get('psw', None)if not account or not psw:return jsonify({"msg": "缺少用户名或密码"}), 400if account not in users:return jsonify({"msg": "未找到用户"}), 404if users[account] != psw:return jsonify({"msg": "用户名或密码错误"}), 401token = create_access_token(identity=account)return jsonify(token=token), 200

        定义一个需要token的GET请求来验证效果

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():current_user = get_jwt_identity()return jsonify(msg=current_user), 200

二、效果程序实现

        1.获取并存储token

login(e){var that = thiswx.request({url:'请求链接',method:'POST',data:{            //POST账号密码account:that.data.account,psw:that.data.psw,},header: {'Content-Type': 'application/json'},success(res) {wx.setStorage({key:'token',data:res.data.token})    //存储token},fail(res){console.log(res)}});},

        大体思路是:使用POST指令向服务器提交账号和密码,并从服务器收到token字符串,然后将token字符串存在本地。

        2.发送带token的GET

privatePost(e){var that = thiswx.request({url:'链接',method:'GET',header: {'Content-Type': 'application/json','Authorization':'Bearer '+wx.getStorageSync('token')},    //构建token头success(res) {that.setData({msg:res.data.msg})    //显示返回信息},fail(res){console.log(res)}});},

        这段代码和普通GET指令唯一的区别在于其在header中设置了一个Authorization属性。如果使用Flask服务器请务必按照这个格式构建header。

        3.登出

        这个更简单了,直接把本地存储的token删了就好了

logout(e){wx.clearStorage('token')},

效果如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git clone超时

本文介绍作者在Centos上链接github超时,无法克隆的解决方案 在出现上图所示问题时,有可能是连接不到github.com,读者可以尝试输入ping github.com,当输入该指令后若长时间没有反应说明可能由于本地DNS无法解析导致的。 解决方案…

java eazyexcel 实现excel的动态多级联动下拉列表(1)使用名称管理器+INDIRECT函数

原理 将数据源放到一个新建的隐藏的sheet中将选项的子选项的对应字典设置到名称管理器中(名称是当前选项的内容,值是他对应的子菜单的单元格范围,在1里面的sheet中)子菜单的数据根据INDIRECT函数去左边那个单元格获取内容&#x…

PyQt5 快速入门(一)

第一节按钮控件,文本控件,输入框,app图标 文章目录 一.GUI按钮控件 二.文本控件 三.输入框 四.让窗口显示在屏幕中央 五.让窗口显示在屏幕中央 总结 一.GUI按钮控件 import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButtonif __name__ __main__:app …

77.网游逆向分析与插件开发-背包的获取-物品类的C++还原

内容参考于:易道云信息技术研究院VIP课 上一个内容:76.网游逆向分析与插件开发-背包的获取-背包地址的逆向分析-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本…

关于安装Dubbo+zookeeper过程中遇到的许多问题

在学习dubbozookeeper时安装启动dubbo-admin出现的一些问题: 首先我是跟着狂神安装zookeeper,基本下来没什么问题。然后就是安装dubbo-admin,狂神安装的是dubbo-admin-master,但是现在github上已经没有这个版本了,只能…

1.21寒假集训

A: 解题思路&#xff1a; 判断改变第一个&#xff0c;后面字符根据前一个字符判断是否改变 判断改变第二个&#xff0c;同上&#xff0c;找到最小改变值。 下面是c代码&#xff1a; #include<iostream> using namespace std; int main() {string s,s1,s2;int sum1 0…

Python sleep函数用法:线程睡眠

如果需要让当前正在执行的线程暂停一段时间&#xff0c;并进入阻塞状态&#xff0c;则可以通过调用 time 模块的 sleep(secs) 函数来实现。该函数可指定一个 secs 参数&#xff0c;用于指定线程阻塞多少秒。 当前线程调用 sleep() 函数进入阻塞状态后&#xff0c;在其睡眠时间…

【Web】CTFSHOW 文件上传刷题记录(全)

期末考完终于可以好好学ctf了&#xff0c;先把这些该回顾的回顾完&#xff0c;直接rushjava&#xff01; 目录 web151 web152 web153 web154-155 web156-159 web160 web161 web162-163 web164 web165 web166 web167 web168 web169-170 web151 如果直接上传php文…

workflow源码解析:http客户端(一)

1、 示例程序 程序从stdin读取http/https URL&#xff0c;抓取网页并把内容打印到stdout&#xff0c;并将请求和响应的http header打印在stderr。 为了简单起见&#xff0c;程序用Ctrl-C退出&#xff0c;但会保证所有资源先被完全释放。 #include <signal.h> #include …

LeetCode 105. 从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,…

【二叉树练习2】

文章目录 判断是否是完全二叉树找出p和q的最近的公共祖先非递归实现前序遍历非递归实现中序遍历非递归实现后序遍历 判断是否是完全二叉树 boolean isCompleteTree(TreeNode root){if (root null){return true;}//创建队列Queue<TreeNode> queue new LinkedList<>…

从一到无穷大 #21 从基于多数据模型分析负载的Benchmark讨论多模数据库的发展方向

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言M2Bench测试结果从Lindorm看待多模的发展方向总结 引言 《M2Bench: A Database …

【手撕C语言 第六集】函数(上)

文章目录 一、函数是什么&#xff1f;二、C语言中函数的分类&#xff1a;1.库函数1.1 如何学会使用库函数&#xff1f; 2. 自定义函数 三、函数的参数1.实际参数&#xff08;实参&#xff09;&#xff1a;2.形式参数&#xff08;形参&#xff09;&#xff1a; 四、函数的调用&a…

JS加密/解密之一个少见的js解密

直接上源代码 (function(){var tfK,EAc715-704;function JQI(d){var q514800;var yd.length;var i[];for(var v0;v<y;v){i[v]d.charAt(v)};for(var v0;v<y;v){var pq*(v245)(q%31355);var eq*(v264)(q%20133);var kp%y;var oe%y;var mi[k];i[k]i[o];i[o]m;q(pe)%3352359…

【漏洞复现】Hikvision综合安防管理平台config信息泄露漏洞

Nx01 产品简介 Hikvision&#xff08;海康威视&#xff09;是一家在中国颇具影响力的安防公司&#xff0c;其网络摄像头产品在市场上占据了相当大的份额。综合安防管理平台基于“统一软件技术架构”理念设计&#xff0c;采用业务组件化技术&#xff0c;满足平台在业务上的弹性扩…

关于程序员的未来的这件事情,我是这么看的!

关于程序员的未来在哪里&#xff1f;很多想做程序员以及已经入坑的程序员都想知道&#xff0c;我作为一名工龄超过12年的资深大龄程序员&#xff0c;我其实也想知道&#xff0c;我也没办法确定程序员的未来在哪里。 或者我也不知道&#xff0c;为什么互联网当初招聘那么多的程…

【数据库原理】(37)Web与数据库

随着网络的高速发展和网络服务的日趋完善&#xff0c;网络上的信息量呈几何级数增长。为了有效地组织、存储、管理和使用网上的信息&#xff0c;数据库技术被广泛地应用于网络领域。特别是在Internet上&#xff0c;已建立了数以万计的网站&#xff0c;其中大中型网站的后台大多…

【数据库原理】(38)数据仓库

数据仓库&#xff08;Data Warehouse, DW&#xff09;是为了满足企业决策分析需求而设计的数据环境&#xff0c;它与传统数据库有明显的不同。 一.数据库仓库概述 定义: 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持企业管理和…

机械设计-哈工大课程学习-螺旋传动

二、摩擦类型 1、静态摩擦&#xff1a;这是身体静止时所经历的摩擦。换句话说&#xff0c;就是身体有运动倾向时的摩擦力。 2、动态摩擦&#xff1a;这是身体在运动时所经历的摩擦。也称为动摩擦。动摩擦有以下两种类型&#xff1a; ①滑动摩擦&#xff1a;一个物体在另一个…

C# Socket通信从入门到精通(17)——单个异步UDP服务器监听一个客户端C#代码实现

前言: 我们在开发UDP通信程序时,除了开发UDP同步客户端程序,有时候我们也需要开发异步UDP服务器程序,所谓的异步最常见的应用就是服务器接收客户端数据以后,程序不会卡在数据接收这里,而是可以继续往下执行,这在实际项目中是经常会遇到的,所以说掌握异步UDP服务器程序…