4.TP6学习 - jwt + 微信小程序验证token
一、安装JWT
composer require firebase/php-jwt
二、配置JWT
我是将jwt的获取token和获取id方法封装在了app下面的common里面
1、引入jwt
use \Firebase\JWT\JWT;
2、封装方法
<?php
// 应用公共文件
use \Firebase\JWT\JWT;
//jwt
//生成验签
//判断方法是否存在
if (!function_exists('signToken')) {function signToken($uid){$key = '15553242780'; //这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当 于加密中常用的 盐 salt$token = array("iss" => $key, //签发者 可以为空"aud" => '', //面象的用户,可以为空"iat" => time(), //签发时间"nbf" => time() + 3, //在什么时候jwt开始生效 (这里表示生成100秒后才生效)"exp" => time() + 200, //token 过期时间"data" => [ //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对'uid' => $uid,]);// print_r($token);$jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 tokenreturn $jwt;}
}
//获取写入的id
if (!function_exists('checkToken')) {
//验证tokenfunction checkToken($token){$key = '15553242780';$status = array("code" => 2);try {JWT::$leeway = 60;//当前时间减去60,把时间留点余地$decoded = JWT::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应$arr = (array)$decoded;$res['code'] = 1;$res['data'] = $arr['data'];return $arr['data']->uid;//解析出来的id 在数组里面的对象} catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确$status['msg'] = "签名不正确";return $status;} catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用$status['msg'] = "token失效";return $status;} catch (\Firebase\JWT\ExpiredException $e) { // token过期$status['msg'] = "token失效";return $status;} catch (Exception $e) { //其他错误$status['msg'] = "未知错误";return $status;}}
}
3、获取token和id
public function getToken()
{$id = 2;$token = signToken($id);$res=checkToken($token);echo $token;echo 'id='.$res;
}
4、在微信小程序中使用jwt--token
基于token(令牌)的用户认证步骤:
- 用户输入其登录信息
- 服务器验证信息是否正确,并返回已签名的token
- token储在客户端,例如存在local storage或cookie中(小程序存在缓存中)
- 之后的HTTP请求都将token添加到请求头里
const token = wx.getStorageSync('token')//从缓存中取出tokenwx.request({url: '',data:{},header: {'token': token, //请求header头携带token},success:(res)=>{console.log(res);this.setData({bargain:res.data.data})}})
- 服务器解码JWT,并且如果令牌有效,则接受请求
- 一旦用户注销,令牌将在客户端被销毁,不需要与服务器进行交互一个关键是,令牌是无状态的。后端服务器不需要保存令牌或当前session的记录。
小程序header添加touken 方法有两种
1、header:{//微信小程序存入token'Authorization': token //token是从缓存中取出来的},
$token = $_SERVER['HTTP_AUTHORIZATION'];
2、
header: {'token': token, //请求header头携带token},
$token = $_SERVER['HTTP_TOKEN'];
4.TP6学习 - jwt + 微信小程序验证token相关推荐
- Spring Boot + Spring Security + JWT + 微信小程序登录
Spring Boot + Spring Security + JWT + 微信小程序登录整合教程 参考文章 文章目录 整合思想 整合步骤 1. AuthenticationToken 2. Auth ...
- 电影周周看——适合新手学习的微信小程序
电影周周看--适合新手学习的微信小程序 一个极其适合新手学习的微信小程序--电影周周看.在这里你可以学习到小程序开发的基本流程和基本方法,麻雀虽小,五脏俱全.搭配学堂在线的教学视频食用更佳!针对教学视 ...
- 2020最新版前端学习路线图--微信小程序制作原来如此简单
黑马程序员前端学习路线图大纲中第六阶段的学习是微信小程序的学习:主要介绍了前端学习路线图中微信小程序的学习目标,前端学习路线图中微信小程序的市场价值,前端学习路线图中微信小程序的重点知识.前端学习路线 ...
- 从0开始学习开发微信小程序(熟悉微信开发者工具页面,简单修改、添加一些内容)
目录 从0开始学习开发微信小程序 准备工作 下载安装微信开发者工具.注册小程序账号 创建小程序 实际操作学习基本功能 写一个名为new的页面. 修改主页的"Hello World" ...
- 学习使用微信小程序动态获取当前时间并实时跳动
学习使用微信小程序动态获取当前时间并实时跳动 1.修改util.js 2..js函数构造 3.wxml页面显示固定时间 1.修改util.js const formatTime = date => ...
- 学习前端-微信小程序
微信开放文档https://developers.weixin.qq.com/miniprogram/dev/framework/ 最近简单的学习了微信小程序的一些组件和路由API写法,学习过程中由于 ...
- Pytorch强化学习玩微信小游戏
文章目录 1.前言: 2.环境准备: 3.代码讲解 A.首先是与调试环境交互相关的代码讲解: B.其次是神经网络代码的讲解 C.最后就是模型训练的代码了 四.总结 1.前言: 学习了DQN有一段时间了 ...
- 第十五周学习周记——微信小程序开发初步
第十五周学习周记 前言 一.小程序简介 二.小程序代码构成 1. JSON配置 2. WXML模板 3. WXSS样式 4. JS逻辑交互 总结 前言 这一周将开始微信小程序的学习. 一.小程序简介 ...
- 学习(微信小程序 开发入门及案例详解 --李骏,边思编著)
第一章 初识小程序 1.小程序不仅在商业上具备很大潜力,同时在技术上解决了一套代码多端运行和动态发版的两大痛点,用户在微信中扫一扫或搜一下即可打开具备原生体验的应用,这给开发者带来了很大的想象空间 2 ...
最新文章
- 线性表 ----链表的C语言实现
- svn is already locked解决方案
- 在nginx上部署vue项目(history模式);
- spring aop实现log 日志跟踪
- 学习笔记之Iframe
- 昨天7月21号,笑笑又生病了
- python一般用什么软件写_python用什么软件写代码
- Go语言http服务器
- 《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation
- Mac OSX上pg gem的安装问题
- 时钟芯片RX8025T的电源设计
- axi_ddr_top
- 体系结构学习笔记二:指令间相关性、相关性导致的冒险和隐藏冒险的方法(持续更新)
- Cat源码分析(三):10种分析器
- 《Google SRE》读后感
- 推出全新的交互式导航和社交导航 iGibson 挑战
- AS打包的应用安装时解析包错误或没有签名
- 数据库常用函数的使用案例
- 何为对象python
- 中望3d快捷键命令大全_3dMAX常用快捷键命令大全