当使用 session 的时候,关于在微信中,session 获取不到的问题
1.业务场景
微信登入授权
2.问题描述
用的是 easywechat 这个第三方依赖包,取到用户的信息存储到session中(这样在下次登入的时候就不需要再次去微信那边进行授权操作),并设置了session的过期时间为一个月,但是在实际的应用中发现过了一段时间session就拿不到了(这会导致我再次请求了微信接口,进而进入页面很慢),一开始以为是session过期了,经过调试发现问题和微信的cookie被清除掉了是同一种情况。
所以我的问题是,当微信端cookie被清除掉了,我应该采取怎样的策略来解决这个问题。(延长cookie时长,怎么延长,是前端还是后端的操作,这个也很想请教一下)
我觉得首先你要搞明白session和cookie的关系。其次我记得好像是微信后台被关闭就会自动清理cookie。至于你后面的问题解决方法就是再次授权,如果授权过了可以用snsapi_base这种方式获取到openid再用接口去拉具体信息。snsapi_base不会弹出授权确认,前提是之前授权过了。
周末测试了一下,首先可以确认三件事。
1.laravel 的 session 必须得有cookie在能正确取到。
2.laravel 的 session 时长的设置是有效的,设置在redis就是在redis 设置在file就是在file
3.非微信浏览器的session 关闭后再次打开必然取不到,不关闭的情况下视你的session时长为准;微信端在后台的情况下默认是2个小时?(不确定)会自动清除掉cookie。
我自身的问题是因为在授权时,写了个updateOrInsert,插入和更新了用户的数据,没有使用到索引(这个sql语句等了10秒钟,这个语法目前还没明白透彻,就不贴代码了) pray: :pray: :pray: :pray: :pray: