[小程序]基于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": "缺少用户名或密码"}), 400

    if account not in users:
        return jsonify({"msg": "未找到用户"}), 404

    if users[account] != psw:
        return jsonify({"msg": "用户名或密码错误"}), 401

    token = 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 = this
    wx.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 = this
    wx.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')
  },

效果如下图:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker(十)Docker Compose

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker Compose 项目 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式…

轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 轻松打卡:使用Spring Boot和Redis Bitmap构建高效签到系统【redis实战 四】 引言(redis实战)前言回顾bitmap基本概念核心特性使用场景 为什么使用redis中的bitmap实现?1. 存储效…

探索全球DNS体系 | 从根服务器到本地解析

DNS 发展 DNS(Domain Name System)的起源可以追溯到互联网早期。 早期的挑战: 早期互联网主要通过IP地址进行通信,用户需要记住复杂的数字串来访问网站。 需求的催生: 随着互联网的扩大,更简单、易记的…

binary_search_tree的介绍与实现(二叉搜索树精美图示详解哦)

二叉搜搜索树 引言二叉搜索树的介绍二叉搜索树的实现框架默认成员函数构造析构赋值重载 InsertR(插入)EraseR(删除)SearchR(查找) 源码概览总结 引言 在C语言部分,我们已经认识了树与二叉树的结…

如何进行正确的 CodeReview

软件开发生命周期中至关重要的一步是代码审查。它使开发人员能够显著提升代码质量。它类似于书籍的创作过程。首先,作者写故事,然后经过编辑以确保不会出现诸如混淆“you’re”和“yours”之类的错误。在这个语境中,代码审查指的是检查和评估…

GPT应用程序的行业应用

GPT(Generative Pre-trained Transformer)应用程序在各个行业都有广泛的应用潜力,其自然语言生成的能力使其适用于多种场景。以下是一些行业中常见的GPT应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件…

【明道云】学习笔记1-了解APaaS

【背景】 APaaS (Application Platform As A Service) ,即应用程序平台即服务,这是基于PaaS(平台即服务)的一种解决方案,支持应用程序在云端的开发、部署和运行,提供软件开发中的基础工具给用户&#xff0…

React Hooks 源码解析:useEffect

React Hooks 源码解析(4):useEffect React 源码版本: v16.11.0源码注释笔记:airingursb/react 1. useEffect 简介 1.1 为什么要有 useEffect 我们在前文中说到 React Hooks 使得 Functional Component 拥有 Class Component 的…

三维重建(4)--三维重建与极几何

目录 一、三维重建基础 1、线性解法 2、非线性解法 3、多视图几何的关键问题 二、极几何 1、极几何关系 2、极几何特例 3、本质矩阵 4、本质矩阵的性质 5、基础矩阵 6、基础矩阵的性质 7、基础矩阵的作用 三、基础矩阵估计 1、八点法 2、归一化的八点法 四…

138.随机链表的复制(附带源码)

目录 一、思路分析 二、如何操作 三、源码 深拷贝:原封不动的拷贝一份 一、思路分析: 这一题,偏向于技巧性。如果是按照工科思维硬推,那会非常头大,脑袋瓜疼。 这一题目的核心难点在于:处理random指针…

BP蓝图映射到C++笔记1

教程链接:示例1:CompleteQuest - 将蓝图转换为C (epicgames.com) 1.常用的引用需要记住,如图所示。 2.蓝图中可以调用C函数,也可以实现C函数 BlueprintImplementableEvent:C只创建,不实现,在蓝图中实现 B…

日常常见应用组件升级记录

一、前言 因近期安全扫描,发现java后端应用涉及多个引用组件版本过低,涉及潜在漏洞利用风险,特记录相关处理升级处理过程,以备后续确认; 二、升级处理过程 2.1、Java类应用内置Spring Boot版本升级 Spring Boot是一…

python实现图片式PDF转可搜索word文档[OCR](已打包exe文件)

目录 1、介绍 1.1、痛点 1.2、程序介绍 2、安装方式 2.1、🔺必要环节 2.2、脚本安装 2.2.1、不太推荐的方式 2.2.2、节约内存的方式 2.3、⭐完整版安装 3、使用 3.1、最终文件目录 3.2、主程序 3.2.1、绝对路径 3.2.2、是否为书籍 3.2.3、⭐截取区域 …

SpringCloudConfig+SpringCloudBus+Actuator+Git实现Eureka关键配置属性热更新(全程不重启服务)

文章目录 前言1.痛点2.解决方案3.具体实现3.1搭建热配置服务3.2编写配置文件3.3搭建版本控制仓库3.4Eureka-Client引入以下依赖3.5Eureka-Client微服务编写以下配置bootstrap.yml提前加载3.6分别编写测试Controller3.7测试效果3.8下线场景压测 4.SpringCloudBus优化 前言 在上…

【Kafka】Kafka介绍、架构和概念

目录 Kafka介绍Kafka优势Kafka应用场景Kafka基本架构和概念ProducerConsumer/Consumer GroupBrokerZooKeeperTopicPartitionReplicasOffsetsegment Kafka介绍 Kafka是是一个优秀的分布式消息中间件,关于常用的消息中间件对比可参考文章:消息中间件概述。…

Linux用户空间和内核空间所有15种内存分配方法

在Linux操作系统中,内存管理是一个关键的系统功能。用户空间和内核空间分别使用不同的函数来申请内存。以下是用户空间和内核空间内存申请函数的详细列表: Linux用户空间内存申请函数 1. malloc() 函数: void* malloc(size_t size); 用于…

Android OpenGL EGL使用——自定义相机

如果要使用OpenGl来自定义相机,EGL还是需要了解下的。 可能大多数开发者使用过OpengGL但是不知道EGL是什么?EGL的作用是什么?这其实一点都不奇怪,因为Android中的GlSurfaceView已经将EGL环境都给配置好了,你一直在使用…

100天精通Python(实用脚本篇)——第113天:基于Tesseract-OCR实现OCR图片文字识别实战

文章目录 专栏导读1. OCR技术介绍2. 模块介绍3. 模块安装4. 代码实战4.1 英文图片测试4.2 数字图片测试4.3 中文图片识别 书籍分享 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准…

Flowable 生成流程图

/*** 生成流程图** param processId 任务ID*/ RequestMapping("/diagram/{processId}") public void genProcessDiagram(HttpServletResponse response,PathVariable("processId") String processId) {InputStream inputStream flowTaskService.diagram(p…

redis优化系列(六)

本期分享redis内存过期策略:过期key的处理 Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。 可以通过修改配置文件来设置Redis的最大内存: maxmemory 1gb …