外卖项目:实现用户端微信登录(debug)

文章目录

  • 一、业务描述
  • 二、接口设计
  • 三、表结构设计
  • 四、配置文件
  • 五、断点调试

一、业务描述

用户进入到小程序的时候,微信授权登录之后才能点餐。需要获取当前微信用户的相关信息,比如昵称、头像等,这样才能够进入到小程序进行下单操作。是基于微信登录来实现小程序的登录功能,没有采用传统账户密码登录的方式。若第一次使用小程序来点餐,就是一个新用户,需要把这个新的用户保存到数据库当中完成自动注册。

业务规则:

  • 基于微信登录实现小程序的登录功能
  • 如果是新用户需要自动完成注册

二、接口设计

通过微信登录的流程,如果要完成微信登录的话,最终就要获得微信用户的openid。在小程序端获取授权码后,向后端服务发送请求,并携带授权码,这样后端服务在收到授权码后,就可以去请求微信接口服务。最终,后端向小程序返回openid和token等数据。

基于上述的登录流程,就可以设计出该接口的请求参数返回数据

在这里插入图片描述

三、表结构设计

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `openid` varchar(45) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '微信用户唯一标识',
  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '姓名',
  `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '手机号',
  `sex` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '性别',
  `id_number` varchar(18) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '身份证号',
  `avatar` varchar(500) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '头像',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin COMMENT='用户信息'

说明:手机号字段比较特殊,个人身份注册的小程序没有权限获取到微信用户的手机号。如果是以企业的资质注册的小程序就能够拿到微信用户的手机号。

参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

四、配置文件

配置微信登录所需配置项:

application-dev.yml
这里是需要自己注册的

sky:
  wechat:
    appid: xxxxxxx
    secret: xxxxxxxxx

application.yml

sky:
  wechat:
    appid: ${sky.wechat.appid}
    secret: ${sky.wechat.secret}

配置为微信用户生成jwt令牌时使用的配置项:

application.yml

sky:
  jwt:
    # 设置jwt签名加密时使用的秘钥
    admin-secret-key: cabbageOne
    # 设置jwt过期时间,故意设计的时间长,方便开发
    admin-ttl: 7200000
    # 设置前端传递过来的令牌名称
    admin-token-name: token
    user-secret-key: cabbageTwo
    user-ttl: 7200000
    user-token-name: authentication

五、断点调试

让我们debug整个登录流程:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述最终完成登录。

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

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

相关文章

SpringBoot如何写好单元测试

🐓序言 Spring中的单元测试非常方便,可以很方便地对Spring Bean进行测试,包括Controller、Service和Repository等Spring Bean进行测试,确保它们的功能正常,并且不会因为应用的其他变化而出现问题。 🐓单元测…

完全理解ARM启动流程:Uboot-Kernel

内容共计5W字数,但是我还是很多地方说的不够尽兴。那么下次聊! 前言 bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Bo…

Vue核心知识点 -Vue2响应式系统是基于什么实现的、以及会产生什么问题和解决方案

一、概念 在Vue 2中,响应式系统是基于Object.defineProperty实现的。它通过劫持对象的属性来实现数据的响应式更新。 当你将一个对象传递给Vue实例的data选项时,Vue会遍历对象的每个属性,并使用Object.defineProperty方法将其转换为getter和s…

YOLO_you only look once

前言 计算机图形学的课程即将结束,我需要提交一份关于YOLO模型的学习报告。在这段时间里,我对YOLO进行了深入的学习和研究,并记录下了我的学习过程和心得体会。本文将详细介绍YOLO模型的原理、优缺点以及应用领域,希望能够为后续…

nodejs pkg打包跨平台执行文件,带.node插件(sharp、sqlite3)

在nodejs引入的第三方库中,大部分插件都是nodejs原生开发,使用pkg可以快速打包,生成windows、linux(ubuntu、centOS等)、麒麟系统下面执行文件。遇到了第三方插件gdal、sharp、sqlite3,在webstorm中打包生成执行文件,跨平台部署的时候会出现找不到###.node文件,需要获取部…

多源BFS - 01矩阵

LCR 107. 01 矩阵 到最近的0的距离,对每一个非0的位置进行搜索,找到最短的距离即可,但如果对每一个非0的点都进行一次搜索的话,肯定是会超时的。这里可以考虑,将所有0点想象成一个0点(超级0)。然后找到所有1点到超级0的…

基于ssm的旅游管理系统

技术:ssmmysqljsp 一、背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。所以各行业,尤其是规模较大…

Nginx鉴权、限流

文章目录 一、Nginx鉴权1. 依赖模块2. Nginx配置3. Rest接口 二、Nginx限流1. 简介2. 控制速率2. 控制连接数 一、Nginx鉴权 1. 依赖模块 依赖模块 http_auth_request_module验证是否安装 nginx -V 2>&1 | grep -- http_auth_request_module2. Nginx配置 server {li…

Python模块-基础知识

Python模块-基础知识 1.模块分类: (1)自定义模块: 如果你自己写一个py文件,在文件内写入一堆函数,则它被称为自定义模块,即使用python编写的.py文件 (2)第三方模块&…

函数栈帧的创建和销毁 - 局部变量|函数传参|函数调用|函数返回|图文详解

目录 1.寄存器EBP和ESP 2.函数栈帧的创建 3.函数的调用 4. 函数栈帧的销毁 函数栈帧(function stack frame)是在函数调用期间在栈上分配的内存区域,用于存储函数的局部变量、参数、以及用于函数调用和返回的相关信息。每当函数被调用时&a…

品牌方年度抖音店铺打造流量运营孵化方案

【干货资料持续更新,以防走丢】 品牌方年度抖音店铺打造流量运营孵化方案 部分资料预览 资料部分是网络整理,仅供学习参考。 PDF共120页(完整资料包含以下内容) 目录 抖音年度短视频直播运营规划方案 1. 帐号视频发布规划 问…

C++进阶:二叉搜索树介绍、模拟实现(递归迭代两版本)及其应用

上次介绍完多态后:C进阶:详解多态(多态、虚函数、抽象类以及虚函数原理详解) 也是要开始继续学习了 文章目录 1.二叉搜索树1.1概念1.2二叉搜索树特性1.3 二叉搜索树的操作 2.模拟实现2.1项目文件规划2.2基本结构2.3各种接口、功能…

【数值模型系列】模拟区域网格设置工具WRFDomainWizard网页版使用介绍

大气数值模型首先需要进行模拟区域参数设置,这一过程可以使用WRF官网提供的WRFDomainWizard软件工具,也可以使用QGIS/GIS4WRF,甚至可以手动设置多次调整(不推荐但不少人使用)。本文介绍WRFDomainWizard工具的网页版&am…

六、循环结构

在python当中有两类循环结构:for循环和while循环 一、遍历for循环 for循环首先判断遍历对象中是否有元素,在依次遍历 for循环常与range()函数使用 for i in range(1,10,):#range()函数依次遍历1~10但不包括10print(i,end ) p…

《尚品甄选》:后台系统——通过面向切面编程AOP,实现记录日志功能

文章目录 一、记录日志的意义二、日志数据表结构三、记录日志思想四、切面类环境搭建五、保存日志数据 一、记录日志的意义 后台管理系统记录操作日志的意义非常重要,主要体现在以下几个方面: 安全性:操作日志可以记录管理员操作行为&#…

【每日一题】数组元素的最小非零乘积

文章目录 Tag题目来源解题思路方法一:贪心 写在最后 Tag 【贪心】【快速幂】【数组】【2024-03-20】 题目来源 1969. 数组元素的最小非零乘积 解题思路 方法一:贪心 前言 我们首先来思考一个简单的问题:假设给定三个整数 a a a&#xf…

JMeter 并发测试和持续性压测详解

并发测试和持续性压测都是评估系统性能的常用方法,它们可以帮助开发人员发现并解决系统中的性能问题。本文来详细介绍下。 概念 并发测试: 旨在评估系统在同时处理多个用户请求时的性能。在这种 测试 中,系统会暴露于一定数量的用户负载下&…

CodeWhisperer插件

一、前言 产品官网地址:What is CodeWhisperer? - CodeWhisperer Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器,可实时为您提供代码建议。在您编写代码时,CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个…

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾!

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾! 告别卡顿,让你的Mac跑得更快更稳! 在当今这个快节奏的生活中,我们的工作和生活早已离不开电脑。特别是对于Mac用户来说,一台轻巧、快捷、稳定的Mac…

代码随想录算法训练营Day51 ||leetCode 309.最佳买卖股票时机含冷冻期 || 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 需要新添加状态 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();if (n 0) return 0;vector<vector<int>> dp(n, vector<int>(4, 0));dp[0][0] - prices[0]; // 持股票for (i…