admin管理员组文章数量:1516870
目录
1 问题描述
最近有用户反馈,小程序登陆有问题
小程序成功登陆后,安卓用户预约操作时,偶尔会出现登陆异常情况 。
之前解决过shiro登陆失败的问题, ,但是没有彻底解决登陆失败的问题。
登陆失败现象极其诡异,问题难以复现。
1 用户10秒前刚登陆,用户后续操作马上提示“登陆异常”
2 部分 安卓用户 在登陆后,在后续操作提示“登陆异常”,这种现象是偶然发生的,安卓用户出现登陆异常概率大概是 10分之1 。
2 苹果用户 从未没有出现”登陆异常“现象。
2 登陆实现方案
在介绍问题前,本文先简单描述下本文应用登陆实现方案。
本文的小程序应用是单独使用Cookie来维护登陆状态,登陆并未使用小程序的sessionKey来维护后台登陆状态。
后端Cookie校验用户登陆状态
为什么不使用小程序SessionKey维护登陆状态?
1 老应用有单独Cookie登陆方式。
2 后台支持多平台登陆(比如小程序、h5网页等),不完全依赖小程序SessionKey完成登陆 。
Shiro控制用户权限
1 获取微信小程序code值
2 code值以及appId换取用户openId
3 openId快捷登陆
4 小程序保存登陆Cookie
5 小程序携带Cookie请求后端应用
6 后端根据前端的Cookie校验用户的登陆情况
可惜小程序不支持Cookie,(浏览器一般会保存用户Cookie,方便后续浏览网页使用)
如何解决小程序支持Cookie登陆?
以下是网上常见的Cookie登陆解决方式。
// 登录
wx.login({
success: function (res) {
log.info(res)
//获取登录的临时凭证
var code = res.code;
//调用后端,获取微信的session_key,secret
wx.request({
url: domain + '/user/wxLogin',
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST",
data: util.json2Form({
code: code,
appId: that.globalData.appId
}),
success: function (result) {
// cookie存储起来
var cookie = result.header['Set-Cookie']
wx.setStorageSync('cookie', cookie)
},
fail: function (res) {
}
})
}
})
})wx.request从res.header['Set-Cookie']中获取cookie信息,并使用wx.setStoargeSync将cookie信息同
版权声明:本文标题:微信小程序之痛:Cookie登陆为啥不奏效?答案在这里! 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1772298880a3273281.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论