收藏
回答

小程序登录态过期的问题

问题模块
教程反馈

登录这块我基本了解,但是目前小程序的登陆态的方案介绍的真不清楚,原生App登陆态过期可以跳到登录页解决登陆态过期问题,web网页可以直接重定向到登录页面解决这个问题。唯独小程序目前不太清楚。下面我具体来说。


第一点,做静默登录,是不需要跳转到授权页面的,如果跳到授权页面只是为了登录,那小程序的静默登录也就白做了。


第二点,如果自定义登陆态的过期时间小于微信端的 session_key的过期时间,那就不需要调用 wx.checkSession ,根据后台返回状态码来判断有没有过期,过期则重新登录,但这里有一个问题,就是我可能同时调用多个API,这样的的话可能会重复登录多次。


第三点,如果自定义登陆态的过期时间大于微信端的 session_key 的过期时间,自定义登陆态必须的,但自定义登陆态的过期时间就白做了,因为只需要 wx.checkSession 就可以,而且 session_key的过期时间还是动态的。


第四点,如果我在小程序端存储过期时间的方式来做判断登录态是否过期,虽然可以,但感觉很不安全。


第五点,如果自定义登陆态不设置过期时间,只是用来识别用户,然后使用 wx.checkSession 来判断有没有过期,而且 wx.checkSession 判断的登陆态过期时间还有个好处就是它是动态的,如果本次小程序生命周期判断为true,则本次生命周期都不会过期。这种看起来很完美,但不知道会不会不安全?


ok,希望各位开发者和官方来说道说道。。。给点建议。。。


最后一次编辑于  2018-06-13
回答关注问题邀请回答
收藏

4 个回答

  • Neal
    Neal
    09-02

    请问这个问题是怎么解决的?


    09-02
    赞同
    回复 3
    • 长天
      长天
      09-04
      能怎么解决,要么使用 wx.checkSession 要么使用自定义登录态,根据后台返回状态码判断是否需要重新登录,然后在内部重新登录再获取数据,或者在每个页面所有请求之前发一个checkSession请求专门判断是否过期,然后再请求数据
      09-04
      回复
    • Neal
      Neal
      09-04回复长天
      我是用storage做一个登陆时间存储,然后拿现在的时间和以前登录的时间作比较,如果大于24小时(后台的cookie是规定24小时过期)就清除cookie跳转到登录页重新登录
      09-04
      回复
    • 长天
      长天
      09-04
      你有登录页,实际上不需要这么费劲,登录由前端有无token和后端返回需要登录的状态码就行了
      09-04
      回复
  • kin
    kin
    2018-06-14

    我也是疑惑这点,感觉自定义登录态过期时间只要依据wx.checkSession来检查就好了。每次onLaunch的时候首先调用wx.checkSession,过期了重新wx.login,也就生成新的自定义登录态了。


    那么问题来了,会不会出现,wx.checkSession返回成功,但是Storage里没有自定义登录态的情况啊?

    2018-06-14
    赞同
    回复 1
    • 长天
      长天
      2018-06-14

      首先会有你说的情况,那就是在工具中删除 session。再者按照你的方式, session 是否过期的判断需要两个情况的综合,先判断有没有 session 再 wx.checkSession 判断是否过期,就ok了。

      2018-06-14
      回复
  • Special
    Special
    2018-06-14

    之前有两篇关于登录和用户信息的小故事,建议看下


    https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1383966312&docid=000e2aac1ac838e29aa6c4eaf56409

    https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1383966312&docid=000c2424654c40bd9c960e71e5b009

    2018-06-14
    赞同
    回复 1
    • 长天
      长天
      2018-06-14

      官方,你没明白我说的话,我说的主要问题是自定义登陆态的时效性的策略应该如果制定才最好,不是授权获取用户信息,授权获取用户信息这点没有什么问题,很ok。希望再重新阅读我的问题!感谢!

      2018-06-14
      回复
  • 长天
    长天
    2018-06-13


    自定义登陆态是必须的,它是用来标识用户的,问题在于登陆态的过期时间的管理

    2018-06-13
    赞同
    回复