(已解决)大家怎么保存登录态的?实测 setStorageSync 似乎不可靠
提了问题一天后,问题解决了:
不是 setStorageSync 的问题。
是我们自己后端的问题。
原因是我们用 union_id 进行用户的查找
Ruby on Rails 代码如下(片段):
User.where(wechat_unionid: unionid)
在用户没有关注公众号的情况下,unionid 是拿不到的,出错了。
换成 open_id 后一切恢复正常。没有关注公众号的新用户在使用小程序的时候也可以正常访问了。
非常感谢各位的热心帮助
__
__
------------------以下是原问题的描述--------------------
__
__
登录态的定义:
自己业务后端给出的 JWT token,比如:eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiZ1hXTSIsImNyZWF0ZWRfYXQiOiIyMDE4LTExLTE0VDE2OjM4OjQ5KzA4OjAwIn0.MmxhdbUOp3U5LA4azLeIj8nXikSWAa0gyD13NF3AXpQ
重点
这个问题的重点不是 JWT,重点是用户登录态的存储方法 (setData/globalData/setStorageSync)
最早时我是用 setStorageSync 存储 token,然后马上从"登录页"跳转到"首页"
(备注:我们小程序里只用了微信登录,完全没用手机号+密码登录或者邮箱+密码登录等方法)
另外,因为业务需求,我在"首页"加了登录检测,如果没登录就自动跳到"登录页"
造成了什么问题
在小部分情况下会造成无限跳转,永远困在登录页
具体情况:登录页->首页->登录页->首页->登录页
在我的开发者工具+真机上测不出来这样的问题。但是每次审核的时候就通过不了,每次都是不同的机型报错:
审核拒绝信息:
__
__
问题排查
在网上搜了一圈,看到了这篇文章: https://blog.csdn.net/qq\_41813695/article/details/80812794
试了一下,把 getStorageSync 从 onLoad 移动到 onShow 里,并没有解决问题。
最新这一次的审核还是失败了(提示 iPhone 5S 用不了)
__
__
是否有代码可以重现?
我在本地和真机都无法复现,都是审核的时候说过不了。所以我觉得提供代码应该没啥帮助。
就是很简单的 setStorageSync 然后 getStorageSync
我的 APPID
wx3e98618e26700e1b
我想问的问题是
大家都是怎么存储登录态的?(setData/globalData/setStorageSync/其他方法)?
我的计划
(换成 globalData,因为 setStorageSync 实在不可靠,连续2次都无法过审)
