问题描述:
前端调用wx.login获取code后,将code传递给后台,后台进行登录操作,登录使用的是shiro框架。之前登录的时候一直都很有效,但是今天登录后,当前端再次调用其他接口时,一直报401未登录!
问题原因:
经过不断的打印日志及分析排查,终于发现了原因:微信不维持session会话!换句话说,微信每次请求服务器的session都是不同的!后来再次查看微信小程序文档时,看到一个词:自定义登录态,当时没怎么在意,现在想想,其含义是,小程序和开发者服务器之间的会话,需要自己去想办法维护,自己去定义一个session或json web token。
解决方案:
前端在第一步调用完wx.login得到code后,将code传递给后台,后台将此次连接的sessionId回传给前端,前端将这个sessionId保存在Cookie中(SESSION=a94e5071-f0f3-40ed-ba2c-4822c1ee4dbd),下次调用接口进行访问时,将这个Cookie带到请求中,这就保证了请求的sessionId一致了。
参考文章:
小程序登录:
https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html
微信小程序之保持登录状态即session不改变(Java):
https://www.cnblogs.com/gdutzyh/p/7251432.html
微信小程序中用户登录和登录态维护:
https://blog.csdn.net/qq_38125123/article/details/71196853