首页 > 编程语言 >微信小程序实现与登录

微信小程序实现与登录

时间:2022-09-27 11:56:39浏览次数:79  
标签:code 登录 程序实现 微信 程序 用户 session

一、小程序的实现原理

  • 在小程序中,渲染层和逻辑层是分开的,双线程同时运行,渲染层和逻辑层这两个通信主体之间的通讯以及通讯主体与第三方服务器之间的通信,都是通过微信客户端进行转发。小程序启动运行两种情况:冷启动(重新开始):用户首次打开或者小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动,即为冷启动
    热启动:用户已经打开过小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需要将后台态的小程序切换到前台,这个过程就是热启动。

二、小程序的登录流程

小程序登录说明官方链接

1.背景

  • 传统web开发实现登录功能
    • 传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录;服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当token过期,用户都需要重新登录
  • 小程序实现登录功能
    • 而在微信小程序中,可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系,从而实现登陆功能;实现小程序用户体系主要涉及到openid和code的概念:用wx.login()方法会生成code,将code作为参数传递给微信服务器指定接口,就可以获取用户的openid。对于每个小程序,微信都会将用户的微信ID映射出一个小程序 openid,作为这个用户在这个小程序的唯一标识

2.流程

  1. 通过 wx.login() 获取到用户的code判断用户是否授权读取用户信息,调用wx.getUserInfo 读取用户数据

  2. 由于小程序后台授权域名无法授权微信的域名,所以需要自身后端调用微信服务器获取用户信息

  3. 通过 wx.request() 方法请求业务方服务器,后端把 appid , appsecret 和 code 一起发送到微信服务器。 appid 和 appsecret 都是微信提供的,可以在管理员后台找到

  4. 微信服务器返回了 openid 及本次登录的会话密钥 session_key

  5. 后端从数据库中查找 openid ,如果没有查到记录,说明该用户没有注册,如果有记录,则继续往下走

  6. session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输

  7. 然后生成 session并返回给小程序

  8. 小程序把 session 存到 storage 里面

  9. 下次请求时,先从 storage 里面读取,然后带给服务端

  10. 服务端对比 session 对应的记录,然后校验有效期

标签:code,登录,程序实现,微信,程序,用户,session
From: https://www.cnblogs.com/P1Kaj1uu/p/16734059.html

相关文章

  • Linux 创建用户并配置SSH免密登录
    补一个Linux的新用户SSH记录叭~1、创建用户 sudouseraddweisheng#weisheng:用户名用户创建成功会在磁盘生成/home/weisheng作为用户根目录 2、目录授......
  • 482登录退出和483目录结构
    Mysql登录的三种方式第一mysql-uroot-proot 不要认为关闭窗口就能推出登录  exit推出 第二种加密方式  退出方式统一第三种 安装事鼠标所在位置勾......
  • JSP实现登录功能(页面带样式)
    功能要求1、完成两个页面2、第一个登陆页面login.jsp3、第二个用户管理页面useManage.jsp4、有登录功能(能进行用户名密码的校验,用户名若为自己的学号密码为班级号,......
  • jquery实现点击复制微信号并自动打开微信加好友​
    近期,有建网站客户要求实现在自己的手机网站上实现点击复制微信号并自动打开微信加好友的功能。怎么在自己建网站时,制作出这样的点击复制微信号并自动打开微信加好友功能呢?......
  • 实用案例:用户登录和注册
    实现用户登录和用户注册,并通过MyBatics数据库判断输入的内容是否正确步骤:准备工作:1、根据已经学过的数据库命令创建一个新表,并进行添加、查询等操作;2、创建一个关于per......
  • 微信小程序路由跳转
    小程序路由跳转官网链接一、声明式导航在页面上声明一个<navigator>导航组件通过点击<navigator>组件实现页面跳转1.导航到tabBar页面tabBar页面指的是被配置为......
  • expect脚本远程登录、远程执行命令和脚本传参简单用法
    expect介绍:最近想写一个自动化安装脚本,涉及到远程登录、分发文件包、远程执行命令等,其中少不了来回输入登录密码,交互式输入命令等,这样就大大降低了效率,那么有什么方法能解......
  • Swift h5 调起微信支付 并返回APP
    参考简书:https://www.jianshu.com/p/2d2237ad16d6第一步先配置URLtypes(在微信操作完成以后回到原APP)第二步直接上代码,然后再解释funcwebView(_webView:WKWebView,......
  • 微信小程序生命周期
    一、生命周期1.应用的生命周期概念:特指小程序从启动-->运行-->销毁的过程。在app.js中进行声明。常见的应用生命周期函数://app.js文件App({//小程序初始......
  • WIFI Captive Portal 登录
    WIFICaptivePortal登录来源 https://www.cnblogs.com/yucloud/p/Captive_Portal.html  开头关于ANDROID5.0-7.1.2网络图标上的感叹号及其解决办法-狐狸的小......