评论

【小程序开发记录】如何判断用户是否已授权

【小程序开发记录】如何判断用户已经授权

场景

在我的很多版本的答题小程序中,对于 用户授权都是统一个逻辑:

用户授权后,将授权的userInfo信息记录到数据集合profiles中,那么每次启动页都要根据是否有授权进行以下逻辑处理

1、如果授权,直接跳到首页

2、如果未授权,跳转到授权页面

具体的启动界面如下所示



问题:

那么如何判断是否授权过呢

之前解决方案

之前的方案是:

每次在启动页拿到openid,当点击跳转按钮的时候,将openid和所有已授权的用户openid进行匹配,如果indexOf==-1那么是没有授权过的,如果indexOf!=-1,那么是授权过了。

当前解决方案存在的弊端

在实际过程中,发现小程序端用户查询只能返回20条,云函数端返回1000条,当用户多的时候,需要一次遍历整个库的过程,这种方案显然非常不可取,

优化后的方案

今天改为如下的方案,就是拿openid直接去查询count看看count是否为0,如果为0那么是未授权的用户,如果为1那么证明是授权过的。

座右铭

专心做好在线答题小程序

好好学习,天天向上,每天进步一点点

最后一次编辑于  2020-04-11  
点赞 1
收藏
评论

2 个评论

  • 一袋甜椒
    一袋甜椒
    2020-04-12

    不是不能一上来就要求授权的吗,你这样写的话是不是没授权就用不了呢?

    2020-04-12
    赞同
    回复 1
    • 小肥羊🍊
      小肥羊🍊
      2020-04-13
      这里有考虑这种情况,增加了游客身份
      2020-04-13
      回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-04-11

    授权登陆过一次后setStorage本地一个标志,以后直接读取这个标志,有的话直接跳转。就不用网络请求或者执行云函数了。

    2020-04-11
    赞同
    回复 1
    • 小肥羊🍊
      小肥羊🍊
      2020-04-11
      因为我的小程序是强依赖用户信息userInfo,所以基本都是在启动页校验下,如果放在本地缓存里面,如果缓存不存在,还是要去数据库捞一下,其实我就是省了缓存这一步,可以优化下
      2020-04-11
      回复
登录 后发表内容