微信小程序-云开发下的用户注册及用户登录逻辑

一、前言

基于微信小程序云开发之下的新用户注册,用户登录的概念其实已经不像传统的网站开发、云开发推出之前的前后端分离开发一样:
1、需要服务端向微信端获取微信用户标识才可以建立自己小程序内的用户体系。
2、需要自定义配置登录态。
相对来说,云开发就显得方便多了,仅需要几十行代码就可以做到新用户注册入库、老用户信息获取(登录)的功能。更加快速的建立小程序内的用户体系。

二、思路分析

实现的思路很简单,搭配数据库的集合(表)访问权限以及插入数据时会自带用户openid字段的特点。
当将用户集合(表)的访问权限设置为仅创建者可读可写,然后再去判断用户是否存在于该用户集合内就可以做到判断该用户是不是新用户,需要执行什么样的操作。

三、这样做的好处

1、安全性

用户信息集合(表)存储的可能是一些用户的隐私信息,例如手机号、实名信息等,将该集合的访问权限设置为仅创建者可读可写就可以最大程度的保护用户的隐私。

2、便捷性

当权限为仅创建者可读可写的时候,去判断集合中是否有此用户信息都不需要传入查询条件。那这种情况之下,就不需要像其他情况下需要先去调用云函数获取用户的openid,再将openid作为查询条件传入进去。

3、健壮性

非仅创建者可读可写的情况下,每次查询肯定都要带查询条件,如果查询条件为** _openid: undefined **的时候,就会发现会查到所有的用户信息。假设出现查询时openid没有拿到或者赋值成了undefined时,就很难受了。

四、实现代码

1、创建集合、配置权限

在这里插入图片描述
在这里插入图片描述

2、实现代码(app.js)

//app.js

let db = null

App({
  onLaunch() {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力')
    } else {
      wx.cloud.init({
        // env 参数说明:
        //   env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
        //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
        //   如不填则使用默认环境(第一个创建的环境)
        env: '云环境id',
        traceUser: true,
      })
      db = wx.cloud.database()
      this.initData()
    }
    this.globalData = {}
  },

  /** 初始化数据 */
  async initData() {
    const userDataObj = await db.collection('user').get()
    let userData = null
    console.log("数据库查询到的用户数据 =====>", userDataObj)
    // 判断是否存在用户信息
    if (userDataObj.data.length >= 1) { // 存在(老用户)
      userData = userDataObj.data[0]
    } else { // 不存在(新用户)
      const serverDate = db.serverDate()
      userData = {
        avatarUrl: null,
        nickName: null,
        createTime: serverDate,
        updateTime: serverDate,
        deleteTime: null
      }
      const addRes = await db.collection('user').add({
        data: userData
      })
      console.log("数据库新增用户结果 =====>", addRes)
      const newuserDataObj = await db.collection('user').get()
      console.log("数据库查询到的新用户数据 =====>", newuserDataObj)
      userData = newuserDataObj.data[0]
    }
    // 将用户数据放入缓存和全局变量中
    wx.setStorageSync('userData', userData)
    this.globalData.userData = userData
  },

})

五、一些疑惑

可能有同学会觉得设置权限为仅创建者可读可写,在有些需求场景之下不能满足,例如需要给其他用户展示另一用户的手机号等信息,又或者想在小程序上做个小型的管理页面,审核用户信息的啥的。这时候好像就不能实现了。
其实是可以实现的,别忘了:权限配置对云函数无效。

因此,合理的设计应该是通过云函数来实现读、写需求,这样能最大程度上保护的数据的安全。

六、结语

实际开发中的其他逻辑就不写了,文章只是介绍这种设计思路。需要同学们自己去考虑异常情况处理等问题啦。

有任何疑问可以在评论区留下。我每天都会进行回复,私聊不回。(为了刷积分)

以上均是本人开发过程中的一些经验总结与领悟,如果有什么不正确的地方,希望大佬们评论区斧正。

💥最后!!!不管这篇文章对你有没有用,既然都看到最后了。
👍赞一个!!!
🤩当然,顺带收藏就最好了。
😎欢迎转载,原创不易,转载请注明出处✍。

😊如果你对小程序开发有兴趣或者正在学习小程序开发,可以关注我。每一篇都是原创,每一篇都是干货噢~。

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

super--Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值