文档是这么写的:
调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。 之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
我 按照文档说明,在服务器后端设置了session,用以记录会话状态,包含openid和session_key,同时返回小程序session_id。此后小程序每一次向服务器后端请求时,我都在header中设置phpsessionid=session_id,这样每次请求都能找到session会话状态。
问题一:wx.checkSession 获取的登录状态,跟我在服务器后端设置的session,有关系吗?
问题二:如果wx.checkSession 获取的登录状态失效,会意味着在服务器后端设置的session失效吗?如果是这样,wx.checkSession怎么知道我在后端设置的session是多长时间?
问题三:如果wx.checkSession 获取的登录状态,跟我在服务器后端设置的session,那我获取这个登录态的意义是什么?反正openid是不变的,我在每次请求header中设置phpsessionid=session_id,我就知道是哪个openid,那前端 获取的登录状态有啥 用?
文档反复看了不少,实在是没明白。麻烦大家帮忙解答下。
我之前也在纠结这个问题,自己服务器端的session,与微信小程序的登录状态应该是没有关联的。除非自己写个判断程序关联在一起。
不过后来想一想其实没有必要。小程序登录是判断微信用户权限的合法性,服务器端这是判断服务器端操作的权限的合法性,只要服务器端不涉及微信业务方面的操作,就不需要进行微信的身份认证。有服务器的session就足够了。
为啥我没听懂呢,前端check_session失效后,重新登录,后台要重新生成sessionid吗?,还有就是之前的sessionid是没有失效的,用户依然可以用旧的sessionId请求接口
两个登录状态凭证,一个微信实现的,一个你自己session实现的,当然你可以建立关联,当微信的session失效时,session_key失效,当然你也可以将自己服务器的session置为失效,详细关系建议阅读文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
关于加解密环节需要session_key