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 类型
相关推荐
华玥作者9 小时前
Vue 3 + TypeScript + uni-app 组件库推荐:hy-app(华玥组件库)
vue.js·typescript·uni-app
FinelyYang10 小时前
uniapp使用kkfileview在线预览ppt,excel,word,pdf类型文件
pdf·uni-app·powerpoint
2501_9160088911 小时前
iPhone 设备信息查看,用 KeyMob 看型号、序列号、电池健康和 UDID
android·ios·小程序·https·uni-app·iphone·webview
ModyQyW1 天前
vite-plugin-uni-manifest 0.7:在 uni-app 读取之前生成
前端·uni-app
lyz2468591 天前
uniapp vue3 小程序开发注意事项
uni-app
雪芽蓝域zzs1 天前
WebStorm Uniapp Support + Uniapp Tool + Uniappx Language Service讲解
vue.js·uni-app·webstorm
普通人61 天前
Web端3D模型加载实战指南_Vue3_uni-app_HTML
前端·javascript·uni-app·html
PedroQue993 天前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
PedroQue993 天前
v0.2.0 架构升级:class + reactive 重塑状态管理
前端·uni-app
CHB5 天前
别再问uni-app x蒸汽模式是否成熟了,已经有大量App案例上架应用商店了
uni-app