uni-app用户登录⑫

文章目录

十九、用户登录-账户名密码登录

一、前端数据整理
  1. 定义发送函数,将用户信息以及本次请求的用户登录类型传递给后端

    react 复制代码
      this._sendUserInfo({ ...res, type: this.type })
  2. 创建请求方法 user_login

  3. 定义 user_login 函数

    react 复制代码
    'use strict';
    // 获取数据库引用
    const db = uniCloud.database()
    exports.main = async (event, context) => {
      const { loginName, password, phone, type } = event;
    
      const { affectedDocs, data } = await db.collection('user')
        .aggregate()
        .match(type === 'account' ? { loginName, password } : { phone })
        .end()
    
      //返回数据给客户端
      return affectedDocs ? {
        code: 0,
        msg: "获取用户信息成功",
        data: data[0]
      } : {
        code: 1,
        msg: type === 'account' ? '获取用户信息失败,请检查用户名或密码' : '验证码或手机号码错误'
      }
    };
  4. 前端接收返回信息,进行数据处理

    1. 跳转界面到上一个历史记录
    2. 存储用户信息
二、使用 store 进行用户信息存储
  1. 创建实例化 Store 对象
react 复制代码
import Vue from 'vue'
import VueX from 'vuex'
import state from './state.js'
import mutations from './mutations.js'
import actions from './actions.js'


Vue.use(VueX)

export default new VueX.Store({
  state,
  actions,
  mutations
})
  1. main.js 中进行 store 注册

  2. 获取用户信息之后,进行用户信息保存操作

    javascript 复制代码
    // login.vue
    
       async _sendUserInfo (data) {
          const res = await this.$http.user_login(data)
          if (res) {
            this.updateUserInfo(res)
            uni.showToast({
              title: '登录成功', icon: 'none',
            })
            setTimeout(() => {
               // #ifdef H5
              uni.switchTab({
                url: '/pages/index/index'
              })
              // #endif
              // #ifndef H5
              uni.navigateBack()
              // #endif
            }, 2000)
          }
        }
    
    // mutation.js
    
    export default {
      updateUserInfo(state,userInfo) {
        uni.setStorageSync('userInfo',userInfo);
        state.userInfo = userInfo;
      }
    }

二十、用户登录-手机验证码登录

一、验证码处理
  1. 获取手机验证状态

  2. 保证 send-code 获取 form 对象

    react 复制代码
    // SendCode.vue
    this.$emit('getForm', form => this._sendCode(form))
  3. 通过 form 进行手机号码单独验证,并获取手机号码

    javascript 复制代码
    const { phone } = await form.validateField(["phone"]);
  4. 启动定时器,调整文本显示内容

    javascript 复制代码
    const timeId = setInterval(() => {
      if (this.time === 1) {
        clearInterval(timeId);
        this.runTime = false;
        this.time = 60;
        return;
      }
      this.time--;
    }, 1000);
二、数据发送
  1. 数据发送,创建云函数
  2. 定义 unicloud 短信服务
    1. unicloud 开发中心地址:https://dev.dcloud.net.cn/uniSms
    2. 短信参考配置地址:https://uniapp.dcloud.net.cn/uniCloud/send-sms
  3. 前端接受返回值,保存验证码,加入验证码验证规则
  4. 提交用户数据发送,指定参数 phone 及 type 类型
相关推荐
小时前端21 小时前
微信小程序选不了本地文件?用 web-view + H5 一招搞定
前端·微信小程序·uni-app
Mr_li2 天前
给 Vue 开发者的 uni-app 快速指南
vue.js·uni-app
anyup2 天前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
Mintopia3 天前
Vue3 项目如何迁移到 uni-app x:从纯 Web 到多端应用的系统指南
uni-app
Mintopia3 天前
uni-app x 发展前景技术分析:跨端统一的新阶段?
uni-app
不爱说话郭德纲4 天前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
HashTang5 天前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
JunjunZ5 天前
uniapp 文件预览:从文件流到多格式预览的完整实现
前端·uni-app
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
TT_Close6 天前
“啪啪啪”三下键盘,极速拉起你的 uni-app 项目!
vue.js·uni-app·前端工程化