这是一篇求助文章,本人第一次使用vue-cli3和开发微信公众号。
事情是这样的,由于业务需求,公众号是需要使用手机登录的,并且不绑定微信号,所以只能 采取常用的token校验登录状态的方式来实现。
登录的实现流程如下:
打开登陆页面——>mounted(){}函数里执行清除token(记住这一步操作,后面是重点)——>登陆成功,缓存token——>封装请求,在请求头加入token——>token校验成功,正常请求,校验失败则跳转到登录页面
很常规的登录操作,web开发者工具和安卓测试跑下来一切正常!

接下来测试ios,登录跳转做请求,一切正常,但是当我关闭微信浏览器重新打开的时候,问题来了,请求的时候报错,提示"未登录"!
我检查了之后发现,在localStorage缓存里的token没了!于是我重新拿安卓进行测试,发现缓存中的token是还在的,此时我怀疑是ios的微信浏览器问题,退出会清除掉localStorage的缓存,于是我换了sessionStorage,嗯???也没了!!!不慌,还可以试试用cookie,嗯???也不行!!!
此时的我把问题都归结在ios的微信浏览器会清除掉缓存,于是我随便写了个参数放在缓存里测试,当我关闭浏览器的时候发现这个参数还在!!!还在!!!怎么回事?我token不配在缓存里生存吗???

于是我又返回去看我的代码,把登录页的缓存操作注释掉,发现token缓存下来了!
此时的我是这样的

我又开始了新的测试,我将登录页的mounted(){}这个函数改成beforeCreate(){},在里面执行清除token,结果关闭浏览器的时候,token又给清除了,此时的我得出一个结论,ios关闭微信浏览器的时候又执行了一次mounted(){}。这时我突然又意识到一件事,登录成功后我已经跳转到B页面了,此时关闭浏览器,token一样清除了,于是我在登录页的mounted(){}函数里打印时间戳,当我进登录页的时候打印出了第一个时间戳,跳转到B页面后再关闭浏览器,此时居然出来了第二个时间戳!!!
流程如下:
进入登录页,打印时间戳——>登录成功,跳转到B页面——>B页面关闭浏览器,打印出了登录页mounted(){}函数里的时间戳

我重新用安卓测试后并没有出现这个问题,目前我仍没解决也没发现这个问题出现的原因,只能暂时认为是ios微信浏览器的bug。希望有大佬可以帮忙解惑一下,或是告诉我是我哪个地方写的不对,感激不尽!!!