[小程序]基于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.hqwc.cn/news/421405.html

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

相关文章

西门子PLC与IO模块之间如何建立无线通讯?

目前,市面上最常见的PLC远程IO的配置是西门子PLC国产PROFINET从站。这样做既保证了整个系统的稳定性,又保证了整个系统的性价比。国产远程IO的优势是性价比高,适配性广,可以兼容市面上常见的PLC品牌,国产IO集成了Ether…

Leetcode—670.最大交换【中等】

2023每日刷题(七十四) Leetcode—670.最大交换 算法思想 实现代码 class Solution { public:int maximumSwap(int num) {string s to_string(num);int n s.size();int maxIdx n - 1;int p -1, q;for(int i n - 2; i > 0; i--) {if(s[i] > s…

答案之书程序

答案之书程序 需求:用户输入手机号码后4位或者生日,自动生成答案之书对应答案 效果图 C#代码实现过程 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;…

Kafka-消费者-KafkaConsumer分析-offset操作

提交offset 在进行消费者正常消费过程中以及Rebalance操作开始之前,都会提交一次offset记录Consumer当前的消费位置。提交offset的功能也是由ConsumerCoordinator实现的。 先来了解OffsetCommitRequest和OffsetCommitResponse的消息体格式,如图所示。 …

1.使用分布式文件系统Minio管理文件

分布式文件系统DFS分类 文件系统 文件系统是操作系统用于组织管理存储设备(磁盘)或分区上文件信息的方法和数据结构,负责对文件存储设备空间进行组织和分配,并对存入文件进行保护和检索 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去…

解析EMC滤波器:功用、设计与应用?|深圳比创达电子EMC

电磁兼容性(EMC)一直是电子设备设计中的关键问题。为了有效应对电磁干扰,EMC滤波器成为设计中不可或缺的一环。本文将深入探讨EMC滤波器的各个方面,包括其定义、原理、设计要点以及在不同领域的应用。通过对这些内容的递进式阐述&…

第二周,第二期技术动态

大家好,才是真的好。 又到周五,我们继续介绍与Domino相关产品新闻,以及互联网或其他IT行业动态等。 一、Domino 12.0.2FP3补丁发布 本周四,HCL发布了Domino 12.0.2FP3补丁程序,有HCL官网注册的企业账户现在可以下载…

模拟jQuery简单封装$方法

jQuery是一个快速、简洁的JavaScript框架,$是jQuery的核心选择器,由$获取到需要修改的元素,然后对元素进行一系列方法操作 模拟jQuery简单封装$方法

【前端设计】card

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

SwiftUI 纯手工打造 100% 可定制的导航栏

功能需求 何曾几时,我们是否也厌倦了 SwiftUI 界面中刻板守旧的导航栏外观,而想要自己动手充分展示灵动炸裂的创造力呢? 如上图所示:我们在 SwiftUI 中通过纯手工打造了一款 100 在本篇博文中,您将学到以下内容 功能需求1. 导航栏基本结构2. 如何感知当前发生用户拖拽行为…

Docker基础语法

目录 一.docker安装 二.docker基础名词 三.docker基础命令 四.命令别名 五.数据卷 六.挂载本地目录或文件 七.Docker镜像 八.网络 一.docker安装 1.安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 docker yum源 yum-config-manag…

外汇天眼:每一个骗局的背后,可能是倾家荡产!

在网络科技还没有发达的以前&#xff0c;骗子主要通过线下揽客的方式推荐各类虚假的投资理财项目&#xff0c;有的甚至打着专门的理财咨询机构吸引了一大批新手投资者。在当时&#xff0c;外汇投资还不为多数人知道&#xff0c;随便忽悠“高利益保本”就有投资者上当受骗。 现如…