小程序登陆注册功能的实现

我们在开发小程序时,难免会用到登陆注册功能。通常小程序有为我们提供用户授权登陆的功能,但是这个只能获取用户的头像和昵称,我们该怎么样来实现小程序账号密码的注册和登陆呢,今天就来手把手的带大家学习小程序登陆注册功能的开发。

老规矩,先看效果图

通过上图可以看到我们主要实现了以下功能

  • 1,账号密码登陆
  • 2,账号密码注册
  • 3,退出登陆

    下面我们就来看下具体实现

    一,原理讲解

    因为我们账号密码的注册,就是把用户设置的账号密码存到数据库里,登陆也是从数据库里取账号和密码来校验。所以我们必须要有数据库。如果用传统的数据库来做,比较麻烦,所以我们今天就借助小程序云开发数据库来做。

二,编写一个云开发的小程序

云开发的知识我讲过很多遍了,还不知道云开发是啥的同学可以翻看下我历史文章,或者看下我录制的云开发基础入门视频:《5小时零基础入门小程序云开发》
编写云开发的时候有几点注意的事项给大家说下

  • 1,要先注册小程序获取appid,因为只有appid你才可以使用云开发
  • 2,记得在app.js里初始化云开发环境id,如下图

三,设置用户存储用户的数据库(集合)

在云开发管理后台,点击数据库,然后点击 + 号,添加user集合(数据表),如下图

四,编写注册代码

代码其实很简单,我这里把对应的代码给大家贴出来。

  • 1,注册页面的wxml文件
  • 2,注册页面的js文件
    Page({
    data: {
    name: ‘‘,
    zhanghao: ‘‘,
    mima: ‘‘
    },
    //获取用户名
    getName(event) {
    console.log(‘获取输入的用户名‘, event.detail.value)
    this.setData({
      name: event.detail.value
    })
    },
    //获取用户账号
    getZhangHao(event) {
    console.log(‘获取输入的账号‘, event.detail.value)
    this.setData({
      zhanghao: event.detail.value
    })
    },
    // 获取密码
    getMiMa(event) {
    console.log(‘获取输入的密码‘, event.detail.value)
    this.setData({
      mima: event.detail.value
    })
    },
    
    //注册
    zhuce() {
    let name = this.data.name
    let zhanghao = this.data.zhanghao
    let mima = this.data.mima
    console.log("点击了注册")
    console.log("name", name)
    console.log("zhanghao", zhanghao)
    console.log("mima", mima)
    //校验用户名
    if (name.length < 2) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘用户名至少2位‘,
      })
      return
    }
    if (name.length > 10) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘用户名最多10位‘,
      })
      return
    }
    //校验账号
    if (zhanghao.length < 4) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘账号至少4位‘,
      })
      return
    }
    //校验密码
    if (mima.length < 4) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘密码至少4位‘,
      })
      return
    }
    //注册功能的实现
    wx.cloud.database().collection(‘user‘).add({
      data: {
        name: name,
        zhanghao: zhanghao,
        mima: mima
      },
      success(res) {
        console.log(‘注册成功‘, res)
        wx.showToast({
          title: ‘注册成功‘,
        })
        wx.navigateTo({
          url: ‘../login/login‘,
        })
      },
      fail(res) {
        console.log(‘注册失败‘, res)
      }
    })
    }
    })
  • 3,注册页面的wxss(样式)页面很简单

    我这只做下简单的样式美化,主要还是来实现功能的。

五,编写登陆页面的代码

  • 1,登陆页面的wxml文件
  • 2,登陆页的js(逻辑编写)页
    Page({
    data: {
    zhanghao: ‘‘,
    mima: ‘‘
    },
    //获取输入的账号
    getZhanghao(event) {
    //console.log(‘账号‘, event.detail.value)
    this.setData({
      zhanghao: event.detail.value
    })
    
    },
    //获取输入的密码
    getMima(event) {
    // console.log(‘密码‘, event.detail.value)
    this.setData({
      mima: event.detail.value
    })
    },
    //点击登陆
    login() {
    let zhanghao = this.data.zhanghao
    let mima = this.data.mima
    console.log(‘账号‘, zhanghao, ‘密码‘, mima)
    if (zhanghao.length < 4) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘账号至少4位‘,
      })
      return
    }
    if (mima.length < 4) {
      wx.showToast({
        icon: ‘none‘,
        title: ‘账号至少4位‘,
      })
      return
    }
    
    //登陆
    wx.cloud.database().collection(‘user‘).where({
      zhanghao: zhanghao
    }).get({
      success(res) {
        console.log("获取数据成功", res)
        let user = res.data[0]
        console.log("user", user)
        if (mima == user.mima) {
          console.log(‘登陆成功‘)
          wx.showToast({
            title: ‘登陆成功‘,
          })
          // wx.navigateTo({
          //   url: ‘../home/home?name=‘ + user.name,
          // })
          wx.navigateTo({
            url: ‘/pages/me/me‘,
          })
          //保存用户登陆状态
          wx.setStorageSync(‘user‘, user)
        } else {
          console.log(‘登陆失败‘)
          wx.showToast({
            icon: ‘none‘,
            title: ‘账号或密码不正确‘,
          })
        }
      },
      fail(res) {
        console.log("获取数据失败", res)
      }
    })
    
    }
    })
  • 3,样式比较简单

六,编写个人中心登陆和未登陆状态的展示,含退出登陆功能

  • 1,wxml文件如下
  • 2,js文件如下,退出登陆和保存登陆状态也在里面
    
    Page({
    data: {
    loginOK: false
    },
    //去登陆页
    denglu() {
    wx.navigateTo({
      url: ‘/pages/login/login‘,
    })
    },
    //去注册页
    zhuce() {
    wx.navigateTo({
      url: ‘/pages/index/index‘,
    })
    },
    onShow() {
    let user = wx.getStorageSync(‘user‘)
    if (user && user.name) {
      this.setData({
        loginOK: true,
        name: user.name
      })
    } else {
      this.setData({
        loginOK: false
      })
    }
    },
    
    //退出登陆
    tuichu() {
    wx.setStorageSync(‘user‘, null)
    let user = wx.getStorageSync(‘user‘)
    if (user && user.name) {
      this.setData({
        loginOK: true,
        name: user.name
      })
    } else {
      this.setData({
        loginOK: false
      })
    }
    }

})


- 3,个人中心登陆成功的状态如下
![ ](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy82MjczNzEzLWJiNmQzMWQxNjBmZjQ5MjA?x-oss-process=image/format,png)

#### 到这里我们就完整的实现了小程序的登陆注册功能了,虽然比较简单,没有做密码加密等一些复杂的操作,但是我们基本的登陆注册原理就是这样实现的,你只有先把最基础的登陆注册功能实现,学习后面复杂的登陆注册,验证码登陆等一系列知识,才会游刃有余。

我把这节登陆注册功能的实现录制了一套课程出来,感兴趣的同学可以去看下,支持下石头哥。

原文地址:https://blog.51cto.com/14368928/2457315

时间: 2024-11-08 18:16:37

小程序登陆注册功能的实现的相关文章

Nodejs连接MySQL&amp;&amp;实现unity中的登陆注册功能

MySQL是一款常用的开源数据库产品,通常也是免费数据库的首选.查了一下NPM列表,发现Nodejs有13库可以访问MySQL,felixge/node-mysql似乎是最受关注项目,我也决定尝试用一下. 要注意名字,"felixge/node-mysql"非"node-mysql",安装目录 1. node-mysql介绍 felixge/node-mysql是一个纯nodejs的用javascript实现的一个MySQL客户端程序.felixge/node-my

小程序“自定义关键词”功能的常见问答

我们知道小程序可以通过线下扫码.公众号.好友分享.长按小程序码.搜索小程序名称来找到,现在又多了一个新方式——小程序后台新增自定义关键词功能:已发布小程序的开发者,可提交最多10个与小程序业务相关的关键词,帮助你的小程序更好地被发现. (登陆小程序后台——点击左侧“推广”添加关键词) 自定义关键词搜索策略将于6月9日生效.届时,用户可以通过搜索关键词,找到相关的小程序.小程序的关键词每个月可以修改三次. 开发者还可在后台看到关键词推广效果. 我们希望通过“自定义关键词”功能,帮助用户在微信内更便

微信小程序开发-蓝牙功能开发

0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数据帧格式的定义,当然这部分就不是本次博客的重点.1. 准备硬件 这里我准备了CH341SER这个作为USB转串口.用sscom5.13.1 串口工具.由于我不太懂硬件开发.硬件部分都是由公司其他人开发的.我只是负责把环境搭建起来.然后负责我的微信小程序开发. 2. 开发小程序简单讲解 onLoad

补充ABP Zero集成微信小程序登陆的BUG修复部分

感谢园友 @turingguo 发布的 https://www.cnblogs.com/turingguo/p/9019026.html  文章,详细介绍了ABP Zero集成微信小程序登陆的实现过程. 经测试,abp的外部登陆有几处bug,在此做记录. 1.xxxxWebHostModule.cs文件 1 public override void PostInitialize() 2 { 3 4 if (!IocManager.Resolve<IMultiTenancyConfig>().I

小程序登陆遇到 ERR_REQUEST_PARAM

小程序测试环境突然登陆不上,返回的错误信息是{}"code":-1,"error":"ERR_REQUEST_PARAM"}. 小程序登陆代码,使用的是 wafer2-client-sdk, 单步调试,在../vendor/water2-client-client/lib/login.js中第76行左右,返回的错误信息. 解决方案参看: https://github.com/tencentyun/wafer2-quickstart/issues/

ABP Zero集成微信小程序登陆

首先是ABPZero的第三方登陆模块,通过调用第三方的登录接口返回用户信息,再交给ABP的登陆验证模块去执行对应的登陆注册. 涉及的数据库表主要是这两个表,AbpUsers存储了用户信息,AbpUserLogins存储了登陆方式,第三方登陆的信息就是存储在这里的 主要是四个字段 LoginProvider ProviderKey TenantId UserId 登陆提供器   用户唯一Id  对应的租户Id和用户Id 首先需要编写一个LoginProvider,代码如下 using System

我感觉这个书上的微信小程序登陆写得不好

基本功能是OK,但是感觉传的数据太多,不安全,需要改写. App({ d: { hostUrl: 'http://www.test.com/index.php', //请填写您自己的小程序主机URL appId: "xxx", appKey: "xxx", ceshiUrl: 'http://www.test.com/index.php',//请填写您自己的测试URL }, //小程序初始化完成时触发,全局只触发一次 onLaunch: function () {

微信小程序 app注册小程序+page注册页面代码一

注册小程序代码:app.js //app.js App({ onLaunch: function(){ var log = wx.getStorageSync("logs") || [] log.unshift(Date.now()) wx.setStorageSync("logs", log) wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId } })

微信小程序开发者注册流程

一,首先打开浏览器,搜索微信公众平台 点击进入,此时还没有注册微信小程序开发账号,我们需要点击注册 进入注册页面,会出现四种账号,我们选择小程序账号 然后根据提示就可以进行注册了 注册时,需填写一下个人相关信息 填写完毕就注册好了 要开发小程序还需要对小程序进行一些信息填写 在完成这些任务之后,我们就可以进行小程序开发了 记得好用点击推荐收藏-_-