微信小程序 如何保持登录状态

问题

由于wx.request()发起的每次请求对于服务器来说都是不同的会话(wx.request()请求是先经过微信服务器再到达我们的服务器),这样会导致后续请求都相当于未登录的状态。

解决方案

将登陆时后端返回的session保存在本地,

然后将session存放在cookie中以请求头的方式带回给服务端

实现代码

1.请求登陆接口获取到header["Set-Cookie"],并储存

//app.js

App({

onLaunch() {

wx.login({ // 登录

// 发送 res.code 到后台换取 openId, sessionKey, unionId

success: res => {

wx.request({

url: 'api/login',

method: 'POST',

data: {

code: res.code

},

success(res) {

//必须先清除,否则res.header['Set-Cookie']会报错

wx.removeStorageSync('sessionid') ;

//储存res.header['Set-Cookie']

wx.setStorageSync("sessionid", res.header["Set-Cookie"]) ;

}

});

}

});

}

})

2.后续接口将储存的sessionid放在cookie中以请求头的方式带回给服务端

//index.js

Page({

onLoad(options) {

wx.request({

url: api + '/list',

method: 'GET',

header: { //将sessionid放在cookie中以请求头的方式带回给服务端

'cookie': wx.getStorageSync("sessionid")

},

success(res) {

console.log(res);

}

})

}

})

以上是 微信小程序 如何保持登录状态 的全部内容, 来源链接: utcz.com/z/339351.html

回到顶部