文章目录

  • 一、前言
  • 二、思路分析
  • 三、这样做的好处
    • 1、安全性
    • 2、便捷性
    • 3、健壮性
  • 四、实现代码
    • 1、创建集合、配置权限
    • 2、实现代码(app.js)
  • 五、一些疑惑
  • 六、结语

一、前言

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

二、思路分析

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

三、这样做的好处

1、安全性

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

2、便捷性

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

3、健壮性

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

四、实现代码

1、创建集合、配置权限


2、实现代码(app.js)

//app.jslet db = nullApp({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 = nullconsole.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},})

五、一些疑惑

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

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

六、结语

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

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

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

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

  1. 微信小程序云开发——实现 线上注册,登录的逻辑,并保存账号到云数据库( 一 ):新建云服务小程序项目

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 首先要实现的是用微信开发者工具新建一个项目: 我们先要做的是注册一个小程序,用 ...

  2. 微信小程序云开发通过服务号给用户推送模板消息

    主要参考下面两个文章 1.云函数接收公众号消息推送 | 微信开放社区 ​​​​​​2.微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(一,获取推送前所需信息)_微信小程序推送服务通知_庆登登登 ...

  3. 微信小程序云开发——实现 线上注册,登录的逻辑,并保存账号到云数据库( 二 ):注册

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 这一章讲解的是用户注册的逻辑: 继上一章节开通云服务之后,首先要做的就是创建一 ...

  4. 微信小程序云开发——实现 线上注册,登录的逻辑,并保存账号到云数据库( 三 ):登录

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 继上一章节柚子完成了注册的逻辑代码,这一章节讲解登录逻辑代码: 下面是柚子写的 ...

  5. 微信小程序云开发——实现 线上注册,登录的逻辑,并保存账号到云数据库( 四 ):修改密码

    要有遥不可及的梦想,也要有脚踏实地的本事.----------- Grapefruit.Banuit Gang(香柚帮) 继上一章节柚子完成了登录的逻辑代码已经好久了,都给忘了,这一章节补上修改密码逻 ...

  6. 微信小程序云开发入门-快速获取手机号

    一.前言 很多时候,我们需要获取用户的手机号码,一般是由用户自己输入,然后我们需要保证手机号的准确性比较高的话,可能还需要搭配一个验证码的功能来确保一定的准确性.这样实现起来的开发成本以及用户体验感都 ...

  7. 【系】微信小程序云开发实战坚果商城-前后端交互之订单实现

    第 4-7 课:前后端交互之订单实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

  8. 垃圾分类微信小程序——云开发+CMS+微应用+百度智能云图片识别

    功能列表 1.0.0版本: 三个版本,一个APPID,登录页选择版本 登录,openid判断 社区居民用户注册,一房一主 工作/清洁人员账号绑定,一人一号,一号一人 用户首页,直接展示搜索功能,包括图 ...

  9. 微信小程序云开发不完全指北

    微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...

最新文章

  1. SAP Fiori issue排查:why search by ID does not work
  2. java秒杀时间与服务器时间_Javascript实现秒杀倒计时(时间与服务器时间同步)...
  3. 程序员的恶性循环 !
  4. javascript-变量的作用域
  5. 特征筛选11——ExtraTrees筛选特征
  6. python os.path.split_Python中split()和os.path.split()
  7. 最全Handler解读,持续补充...
  8. 我的博客学习记录一箩筐(每天更新)
  9. php反射机制详解,PHP反射机制
  10. 快解析:NAT移动版结合管家婆使用操作
  11. (mac版本)IntelliJ IDEA 常用快捷键
  12. javascript解决猴子偷桃问题
  13. 新《葫芦兄弟》被批毁童年,如果这样拍必然好看一百倍!
  14. 双相机 单目三维重建
  15. 统一软件过程的基本概念
  16. 干起来,你就超过了 50% 的人
  17. 亿赛通电子文档安全管理系统dataimport远程命令执行漏洞
  18. MacBook 重置 MySQL的密码
  19. 三种条码code39和code93以及code128在应用中的比较
  20. And I‘m gonna take, mind of you with me

热门文章

  1. 通过Postman模拟跨域请求
  2. FileMaker Pro 15 Essential Training FileMaker Pro 15基础教程 Lynda课程中文字幕
  3. 有关微信分享,点击取消之后回调没有错误码返回的问题
  4. 阿里图标库图标大小_适用于所有设备和大小的所有图标
  5. 计算机网络交换机无法ping,巧妙解决交换机无法ping通的网络疑问 -电脑资料
  6. 分析5万多场英雄联盟比赛,教你如何轻松用python预测胜负
  7. 如何在CSDN中插入动图gif
  8. 【面试高频题】难度 1.5/5,数据结构运用题
  9. [Python基础05]输入输出选择和循环
  10. CENTOS7 Anaconda+Jupyter+Pyspark联合安装