微信小程序之接口验证问题与处理onLaunch与onload异步同步问题
2023-09-11 14:19:35 时间
为了微信小程序接口的安全,我们需要通过一种方法,使得每次请求都需要验证一个key.但是因为异步处理的问题,我们需要先获得这个key存储后才进入下一步
1、获取开发服务器生成的key
1 //app.js 2 App({ 3 globalData: { 4 isSessionkey:false //是否已经获得key 5 }, 6 7 onLaunch: function () { 8 var that = this; 9 wx.login({ 10 success(res) { 11 if (res.code) { 12 //console.log(res.code); 13 //发起网络请求 14 wx.request({ 15 url: '**/index/zz/getuserinfo', 16 data: { 17 code: res.code 18 }, 19 success: res => {
/*用户open_id*/ 20 wx.setStorageSync('open_id', res.data.openid); 21 wx.setStorageSync('session_id', res.data.session_id);
/*服务器加上code等生成的key*/ 22 wx.setStorageSync('session_key', res.data.session_key); 23 that.globalData.isSessionkey=true; 24 // 由于 获取session_key 是网络请求,可能会在Onload之后执行26 // 所以此处加入 sessionCallback 以防止这种情况 27 if (that.sessionCallback) { 28 that.sessionCallback(res); 29 } 30 31 } 32 }) 33 } else { 34 console.log('登录失败!' + res.errMsg) 35 } 36 37 }, fail: function () { 38 39 } 40 }); 41 },
2、在页面中使用:
1 init_data:function() 2 {
/*页面初始化数据*/ 3 }, 4 onLoad: function () { 5 var that=this; 6 /*存储接口安全key */ 7 //判断是用户是否绑定了 8 if (!app.globalData.isSessionkey) { 9 // 由于 获取session_key 是网络请求,可能会在 Page.onLoad 之后才返回 10 // 所以此处加入 sessionCallback 以防止这种情况 11 app.sessionCallback= res => { 12 13 that.init_data(); 14 15 } 16 }else 17 { 18 that.init_data(); 19 } 20 }
3、在请求里加上token,并加上sesssion_id
var webUrl = "https://www.xxxx.com/"; //网络请求方法 function getWebDataWithPostOrGet(model,wx) { wx.showLoading({ title: '数据加载中', }); wx.request({ url: webUrl + model.url, data: model.param, header: { "Content-Type": "application/json", "token": wx.getStorageSync('session_key'), "cookie": "PHPSESSID="+wx.getStorageSync('session_id') },
相关文章
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
- 文件名过长导致不能提交到缓存区或同步到本地
- 【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统
- Java多线程同步 synchronized 关键字的使用
- 教你实现快应用storage接口同步调用
- Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos
- Apache NiFi之MySQL数据同步到本地文件系统
- WINDOWS 同步(Interlocked,InterlockedExchangeAdd,Slim读/写锁,WaitForSingleObject,CreateWaitableTimer等等)
- 配置ETH 2.0 同步节点 Nethermind & Prysm
- linux 下同步异步,堵塞非堵塞的一些想法
- MYSQL管理之主从同步管理