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

一、前言

基于微信小程序云开发之下的新用户注册,用户登录的概念其实已经不像传统的网站开发、云开发推出之前的前后端分离开发一样:
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
    评论
微信小程序阿里云开发是指使用阿里云Web服务来开发和部署微信小程序。开发过程可以按照以下步骤进行: 1. 准备开始,包括注册微信小程序和开通阿里云主机。 2. 搭服务端数据库,可以使用阿里云提供的云存储,用于存储素材和调用云数据库。 3. 实现服务端调用逻辑,包括处理用户请求和返回相应的数据。 4. 开发微信小程序的准备,包括设置小程序的基本信息和配置。 5. 小程序项目中的文件资源,包括上传和管理小程序的资源文件。 6. 开发小程序卡片类型呈现功能,用于展示小程序的卡片样式。 7. 开发小程序卡片浏览功能,用户可以通过浏览卡片来获取信息。 8. 实现发音朗读,可以在小程序中添加发音朗读功能。 9. 开发小程序设置功能,用户可以在小程序中进行个性化设置。 10. 开发小程序用户反馈功能,用户可以向开发者提供反馈。 11. 小程序底部菜单,可以在小程序中添加底部菜单导航。 12. 发布小程序,可以将开发完成的小程序发布到微信平台供用户使用。 以上是使用阿里云Web服务开发微信小程序的一般步骤。具体的开发流程和详细操作可以参考《详细的【微信小程序 阿里云Web服务】开发部署指引》系列文章中的内容。 另外,使用阿里云Web服务还可以通过云存储来存储小程序所需要的资源文件,如图片、音频等。云存储可以像百度网盘一样用来存储和管理自己的资源。同时,云存储还可以与云数据库进行配合使用,方便调用和管理数据。 最后,发布小程序时需要先创一个虚拟主机,并为其创HTTPS证书,以确保小程序的安全性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [最详细的【微信小程序+阿里云Web服务】开发部署指引(十四):发布小程序](https://blog.csdn.net/stdonald/article/details/117201975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [微信小程序云开发之使用云存储](https://download.csdn.net/download/weixin_38690402/14806926)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

super--Yang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值