收藏
回答

wx.checkSession 获取的登录状态,跟我在服务器后端保存的session状态,有关系吗?

文档是这么写的:

调用 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,那前端 获取的登录状态有啥 用?


文档反复看了不少,实在是没明白。麻烦大家帮忙解答下。


回答关注问题邀请回答
收藏

3 个回答

  • 小珂
    小珂
    2020-11-24

    我之前也在纠结这个问题,自己服务器端的session,与微信小程序的登录状态应该是没有关联的。除非自己写个判断程序关联在一起。

    不过后来想一想其实没有必要。小程序登录是判断微信用户权限的合法性,服务器端这是判断服务器端操作的权限的合法性,只要服务器端不涉及微信业务方面的操作,就不需要进行微信的身份认证。有服务器的session就足够了。

    2020-11-24
    有用
    回复
  • 观海听潮
    观海听潮
    2020-09-01

    为啥我没听懂呢,前端check_session失效后,重新登录,后台要重新生成sessionid吗?,还有就是之前的sessionid是没有失效的,用户依然可以用旧的sessionId请求接口

    2020-09-01
    有用
    回复
  • VBit
    VBit
    2020-08-07

    两个登录状态凭证,一个微信实现的,一个你自己session实现的,当然你可以建立关联,当微信的session失效时,session_key失效,当然你也可以将自己服务器的session置为失效,详细关系建议阅读文档:

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

    2020-08-07
    有用
    回复 6
    • 江某
      江某
      2020-08-07
      多谢回复。这个文档页面我看过了。假设小程序前端登录态失效,而服务器的session仍有效,那业务不也是可以正常吗? 还是说,如果前端登录态失效,小程序前端的api是用不了的,一定要先wx.login才能调用其他api?
      2020-08-07
      回复
    • VBit
      VBit
      2020-08-07回复江某
      如果你的业务对微信返回的session_key不涉及,不涉及请求相关接口的话是没问题,因为微信端的session一旦失效,这个session_key也就失效了,接口如果需要依赖此session_key就不能正常调用
      2020-08-07
      回复
    • VBit
      VBit
      2020-08-07回复江某
      https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
      关于加解密环节需要session_key
      2020-08-07
      回复
    • 江某
      江某
      2020-08-07回复VBit
      哦哦!我明白了。非常感谢你
      2020-08-07
      回复
    • 2020-11-18
      如果我自定义的sessionid是永久有效的,那么即便微信端生成的session_key失效了,只要我不涉及到wx,login(),调用auth.code2Session接口,我依旧是可以通过我自定义的sessionid做业务操作吗?
      2020-11-18
      回复
    查看更多(1)
登录 后发表内容
问题标签