panda-chat-room

继上节「理解小程序 session」 ,本节我们以 jsonwebtoken 来实现小程序端的用户状态标识。如果你对小程序用户登录流程及 session 管理还有些疑惑,可以参考本节实现自己的小程序登录方案。

本节我们用 JWT 实现小程序本地用户标识

依然是从前端到后端, JWT 即 jsonwebtoken 是一种无状态化的认证手段。 在本节中我们采取 JWT 来达到在本地标识小程序用户的目的「作用类似于 session」。

  1. JWT 是保存在小程序端的用户标识
  2. JWT 不是一种保密措施,但它却是防篡改的「但是如果别人拿到了你的 JWT, 他就能冒充你」
  3. 在服务器端我们不维护任何状态, 服务器只负责生成、解密、验证 JWT
目录结构:

前端小程序

  1. 前端 utils 文件为一些常用的工具函数
  2. 前端 services 为微信登录函数

后端 koa

  1. token.js JWT 的各类操作
  2. doLogin.js 与微信服务器的交互,用于解密验证用户信息,用户信息写库、生成 JWT
  3. weixin.js 微信用户的解密算法

资料

JSON Web Token - 在Web应用间安全地传递信息

理解JWT的使用场景和优劣

注意事项

此 demo 中的所有配置信息有可能随时失效
源码

用 JWT 实现小程序本地用户标识的更多相关文章

  1. 微信小程序本地引用iconfont(阿里巴巴矢量图标库)

    好,忙,我懂..... 首先把图标放进项目里(废话): 接下来把这些图标下载到本地(这里不介绍网络途径了,下载就完事了) 然后利用一个网站将这个ttf文件转成base64文件https://trans ...

  2. 微信小程序 本地缓存保持登录状态之wx.setStorageSync()使用技巧

    微信小程序提供了一个如同浏览器cookie本地缓存方法,那就是今天要说的wx.setStorageSync() 注意,该方法是同步请求,还有个异步请求的方法是wx.setStorage(),参考官方文 ...

  3. 用Nginx实现微信小程序本地SSL请求

    我们在开发小程序的时候,需要填写一个授权域名.还要有一个证书.这些都是花钱的.开发非常不方便.本文主要讲解配置ssl和本地开发 小程序后台添加授权域名 这个域名你要写一个是备案过的.具体是不是你的,都 ...

  4. 小程序本地存储之wx.getStorageSync

    这个主要可以解决微信小程序的记录缓存,入输入框的搜索历史记录 直接上代码 setsearchMsg:function(){ var that=this if (this.data.inputValue ...

  5. js和微信小程序本地获取东八北京时间

    changeCount(){ // 目标时区,东8区 const targetTimezone = -8; // 当前时区与中时区时差,以min为维度 const dif = new Date().g ...

  6. 微信小程序本地的域名“不在以下request合法域名列表中”错误处理方法

  7. 小程序本地资源无法通过 css 获取

    background-image:可以使用网络图片,或者 base64,或者使用<image/>标签

  8. 微信小程序本地缓存

  9. 微信小程序之本地缓存(十)

    [未经作者本人同意,请勿以任何形式转载] 目前,微信给每个小程序提供了10M的本地缓存空间(哎哟妈呀好大) 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的情况下,可以操作缓存数据) 流 ...

随机推荐

  1. Pandas:各种错误

    1.输出为CSV文件时,Permission denied 原因可能是: (1).构建DataFrame时没有写index参数 (2).用Dict构建最开始的数据时,value没有写成List的形式, ...

  2. Python:构建可执行exe文件

    学习自: Python 程序打包成 exe 可执行文件 - 不夜男人 - 博客园 Python生成Windows可执行exe文件 - 韩小北 - 博客园 pyinstaller参数介绍以及总结_Bea ...

  3. LeetCode-020-有效的括号

    有效的括号 题目描述:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺 ...

  4. 13、mysql锁

    mysql锁 事务的隔离性是通过锁来实现的.为保证数据的一致性,需要锁对并发事务操作进行控制.同时锁机制也为实现MySQL的各个隔离级别提供了保证. mysql并发事务访问相同的记录会出现什么问题(在 ...

  5. 微信小程序结合原生JS实现电商模板(二)

    接 <微信小程序结合原生JS实现电商模板(一)>,在首页列表加入购物车到购物和模块增删数量,动态计算商品价格实现后,本次提交主要实现了商品详情(还不完善)简单页面,从商品详情页跳转到购物车 ...

  6. [动态规划] 适合DJ银行的日子

    [动态规划] 适合DJ银行的日子 前言:开始的时候用常规模拟做的超时了,然后看官方题解,大致意思就是连续n天单调可以用动态规划的思想 你和一群强盗准备打劫银行.给你一个下标从 0 开始的整数数组 se ...

  7. jdbc model 代码示例

    package com.gylhaut.model; import java.util.Date; public class Goddess { @Override public String toS ...

  8. Apache HBase MTTR 优化实践

    HBase介绍 HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库,它具有高可靠.高性能.面向列和可伸缩的特性,提供快速随机访问海量数据能力. H ...

  9. 利用多个sem信号量在线程通讯

    直接上代码,主要用到sem_trywait & sem_post #include<stdio.h> #include<pthread.h> #include<s ...

  10. mac安装git

    https://blog.csdn.net/shaock2018/article/details/91127607 继续报错 rm -rf /usr/local/Homebrew/Library/Ta ...