最近应客户需求开发一款小程序,现在记录一下踩的大坑以备忘。
1:需求,因为小程序中用户有多个入口,所以第一次登陆时需要进入登录页面,登录后台,redis保存token验证人员,之后所有接口请求都需要这个token。
问题:如何在微信端保留这个token?
一开始,在app.js中的globalData设置一个usertoken,并在app.js中默认使用微信的openid去绑定表查询一下有未进行用户绑定,如果已经绑定则自动登录并获取token赋值给usertoken,如果没有绑定则跳转登录页面,然并卵,onLaunch是异步调用,它在页面的onLoad之后再调用的,那么就会这样:已经打开某个页面了,但是app.js中的调用还没完成,所以没有token,所有的页面请求全部获取不到数据,其坑在于:开发者工具上onLaunch调用好像蛮快的,一般都在onLoad之前就完成了,所以开发者工具中是没问题的,但是真机测试时就完蛋了。
OK,查到问题了,onLoad先调用么,那么把获取usertoken的请求放到index里的onLoad里去,然后app.globalData.usertoken= usertoken 这样总没问题了吧,然并卵,在index页面获取这个全局变量没有问题,但是只要一跳转页面,这个usertoken仍然不能通过app.globalData.usertoken去获取到。
最后解决方案:wx.setStorageSync('usertoken', usertoken);//存储Token
wx.getStorageSync('userToken')//获取Token