这是 微信官网所说:session_key 阐明
- 以下三方服务端成为服务端
- 微信服务端成为微信端
- 小程序端成为小程序
会话密钥 session_key 有效性开发者如果遇到因为 session_key 不正确而校验签名失败或解密失败,请关注上面几个与 session_key 无关的注意事项。 wx.login 调用时,用户的 session_key 可能会被更新而以致旧 session_key 生效(刷新机制存在最短周期,如果同一个用户短时间内屡次调用 wx.login,并非每次调用都导致 session_key 刷新)。开发者应该在明确须要从新登录时才调用 wx.login,及时通过 auth.code2Session 接口更新服务器存储的 session_key。 微信不会把 session_key 的有效期告知开发者。咱们会依据用户应用小程序的行为对 session_key 进行续期。用户越频繁应用小程序,session_key 有效期越长。 开发者在 session_key 生效时,能够通过从新执行登录流程获取无效的 session_key。应用接口 wx.checkSession能够校验 session_key 是否无效,从而防止小程序重复执行登录流程。 当开发者在实现自定义登录态时,能够思考以 session_key 有效期作为本身登录态有效期,也能够实现自定义的时效性策略。
解释:
wx.login 调用时,用户的 session_key 可能会被更新而以致旧 session_key 生效(刷新机制存在最短周期,如果同一个用户短时间内屡次调用 wx.login,并非每次调用都导致 session_key 刷新)。开发者应该在明确须要从新登录时才调用 wx.login,及时通过 auth.code2Session 接口更新服务器存储的 session_key。
阐明:session_key 是微信端凋谢进去让服务端 保护小程序用户登录状态+用户数据的标识,wx.login 会刷新session_key(留神:频繁登录,微信端可能就懒得刷新重复使用之前的了);小程序 wx.checkSession 查看登录状态是否无效,刷新登录时服务端也依据code从新刷新session_key并且保留;
微信不会把 session_key 的有效期告知开发者。咱们会依据用户应用小程序的行为对 session_key 进行续期。用户越频繁应用小程序,session_key 有效期越长。
阐明:session_key 有没无效代表以后登录状态有没无效,小程序端不停应用会提早有效期,这个和web的tokan、session 机制类相似;留神:小程序端wx.checkSession 查看,服务端可通过API auth.checkSessionKey 查看;
开发者在 session_key 生效时,能够通过从新执行登录流程获取无效的 session_key。应用接口 wx.checkSession能够校验 session_key 是否无效,从而防止小程序重复执行登录流程。当开发者在实现自定义登录态时,能够思考以 session_key 有效期作为本身登录态有效期,也能够实现自定义的时效性策略。
阐明:通过 wx.checkSession 查看登录是否无效,有效就从新执行wx.login 并且 刷新服务端的session_key;
session_key 的应用阐明:
应用形式:
存在三个端口:小程序端、微信端、三方服务端;session_key 是三方服务端连贯微信端的凭证;小程序和三方服务端须要access_token来串通,找辨认以后小程序用户的access_token 从而 找到session_key,就能够在微信端获取以后用户数据、操作了;
通常能够确定:小程序登录状态无效,session_key 无效;小程序端登录生效,session_key生效;小程序端久了未应用,session_key 也会生效,服务端再拿sessio_key 去微信获取数据时就会失败;
如何保护?
- 执行wx.login 登录获取小程序端的code
- 服务端依据code去微信端获取session_key并且缓存;同时生成access_token 保留在小程序端,维持登录状态;
- 小程序端申请服务端用户数据时,先wx.checkSession,无效就通过access_token 确定用户,找到session_key;有效就执行wx.login从新登录从新生成access_token,服务端从新获取session_key;
- 小程序端长时间不应用,服务端的session_key会生效,无奈再用session_key去微信端获取数据,须要小程序端从新执行登录操作; 服务端要获取session_key 只能通过小程序端的登录来操作;
重要提醒:
1、因为用户微信可能更换手机号,所以同一个小程序openid 受权获取的手机号可能会和之前不同,这个必须要思考
2、同一个手机号换绑从新绑定另外一个微信号,openid也会变,所以,也必须思考