微搭低代码实现登录注册功能

news2024/12/23 23:34:49

目录

  • 1 创建用户数据源
  • 2 实现登录逻辑
  • 3 搭建登录页面
  • 4 设置登录框
  • 5 实现登录的逻辑
  • 6 用户注册
  • 总结

原来产品在创建应用的时候可以创建模型应用,模型应用对应我们小程序的后端。最新的更新已经将模型应用的能力下线,那我们不得不自己实现一下后端的逻辑。

后端需要要求用户进行注册,注册完了之后进行登录。本文介绍一下如何借助API的能力实现注册和登录。

1 创建用户数据源

用户在注册的时候需要录入数据,需要先创建数据源。打开控制台,找到数据源,创建我们的用户表
在这里插入图片描述
表的话分为两个字段,分别为用户名和密码。

2 实现登录逻辑

表建好之后,我们需要实现登录的逻辑。找到APIs,创建一个API
在这里插入图片描述
选择自定义代码
在这里插入图片描述
输入名称和标识,点击创建,完成API的创建
在这里插入图片描述
API创建好之后,我们要创建一个方法
在这里插入图片描述
然后输入如下代码

/**
* 根据用户名和密码来验证用户是否成功登录,返回登录的结果
*
*/
module.exports = async function (params, context) {
let result = {}
const user = await context.callModel({
    name: 'zcyh_hh2jizk', // 数据模型标识,可以前往「数据源 - 数据模型」列表页查看
    methodName: 'wedaGetItem', // 数据模型方法标识,支持的方法可以前往「数据源 - 数据模型」的任一数据模型详情页查看当前模型支持的方法
    params: {
      where:[{
         "rel":"eq",
         "key":'yhm',
         "val":params.username
      },{
          "rel":"eq",
         "key":'mm',
         "val":params.password
      }
       
      ]
    }, // 数据模型方法的入参
  });
  
  if(user._id){
    result={
      'msg':'登录成功',
      'code':200,
      'token':user._id
    }
  }else{
    result = {
      'msg':'登录失败,密码不正确',
      'code':-1,
      'token':''
    }
  }

  // 这里返回数据,和出参结构映射
  return result;
};

代码的逻辑是根据用户名和密码去查找用户,如果找到表示登录成功,如果没有找到表示用户登录失败,然后将结果返回。

代码写好之后我们要增加好入参
在这里插入图片描述
然后点击方法测试,输入我们的入参,返回结果之后点击出参自动映射
在这里插入图片描述
这样我们的后端逻辑就搭建好了,接着实现一下前端页面

3 搭建登录页面

首先我们点击创建应用,创建一个空白应用
在这里插入图片描述
然后切换一下构建模式,选中PC端
在这里插入图片描述
先添加一个普通容器用来显示登录的背景图片
在这里插入图片描述
切换到样式,设置普通容器的宽为100%,高度为100vh。
在这里插入图片描述
默认的单位没有vh选项,我们需要输入一下CSS代码,点击CSS,输入样式代码
在这里插入图片描述
在这里插入图片描述

:root {
  width: 100%;
  height: 100vh;
}

然后从网上找一张背景图片,并且上传到素材里
在这里插入图片描述
在这里插入图片描述
我现在的图片的大小是1696*1620,你可以根据自己的需要进行选择,这个看你要适配的电脑的大小,通常16寸的电脑分辨率可以最大到1960像素,打开图片会左右稍有一点间距

素材上传完毕后,设置普通容器的背景图片,选择为我们刚刚的素材
在这里插入图片描述
增加两个样式,让背景图片可以填满容器,超出部分将进行裁剪,并且在图片的中心位置显示

background-position: center;
  background-size: cover;

定位改为相对
在这里插入图片描述

4 设置登录框

背景设置好了之后,我们来设置一下登录框,首先在背景的普通容器下边放置一个普通容器,设置宽度和高度为550px,背景为白色
在这里插入图片描述
设置定位为绝对定位,距右边8%

:root {
  width: 550PX;
  height: 550PX;
  background: rgb(255, 254, 254);
  position: absolute;
  left: auto;
  right: 8%;
}

在这里插入图片描述
还有就是垂直居中,也是通过定位来控制,距上边50%,然后再以自己为中心向上拉回来50%

:root {
  transform: translate(0%,-50%);
  width: 550PX;
  height: 550PX;
  background: rgb(255, 254, 254);
  position: absolute;
  left: auto;
  right: 8%;
  top: 50%;
}

之后放置三个普通容器,分别用来显示系统名称,输入框和版权信息
在这里插入图片描述
在这里插入图片描述

5 实现登录的逻辑

登录逻辑我们新建一个javascript方法,在代码区新建,选择javascript方法
在这里插入图片描述
在这里插入图片描述

export default async function ({ event, data }) {
  const username = $w.input1.value
  const password = $w.input2.value
  console.log('username',username,'password',password)
  const result = await $w.cloud.callDataSource({
    dataSourceName: 'userauth_spbuo7r',
    methodName: 'signIn',
    params: {
      username: username,
      password: password
    }, // 方法入参
  });
  console.log('result',result)
  if (result.code==200) {
    $w.utils.redirectTo({
      pageId: "u_zhu_ye", // 页面 Id
      packageName: "", // 主应用为空或不填,子模块填写 子包目录,查找位置 子包编辑器 --- 页面 --- 子包目录
      params: { key: "value" },
    });
    console.log('token',result.token)
    localStorage.setItem('token', result.token);
  } else {
    $w.utils.showToast({
      title: "登录失败,请输入正确的用户名和密码",
      icon: "error",
      duration: 2000, // 2秒
    });
  }

}

代码的逻辑是先获取输入框的值,然后调用API的登录方法,根据登录的结果来做页面的跳转

然后给登录按钮设置点击事件,选择我们刚刚建立的方法
在这里插入图片描述

6 用户注册

注册比较简单,我们创建一个页面,用表单容器实现即可
在这里插入图片描述

总结

我们本篇实现了PC后台系统的登录及注册功能,主要拆解为后端的实现和前端页面的搭建。初学者可能有疑问,微搭是否只能拖拽组件,其实还是可以写各种各样的代码的,以上就是一个实际的案例,供你参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1308922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【报错栏】(vue)Module not found: Error: Can‘t resolve ‘element-ui‘ in xxx

Module not found: Error: Cant resolve element-ui in xxx 报错原因是: 未安装 element-ui 依赖 解决: npm install element-ui 运行

智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于象群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MA…

【SpringBoot】FreeMarker视图渲染

目录 一、FreeMarker 简介 1.1 什么是FreeMarker? 1.2 Freemarker模板组成部分 1.3 为什么要使用FreeMarker 二、Springboot集成FreeMarker 2.1 配置 2.2 数据类型 2.2.1 字符串 2.2.2 数值 2.2.3 布尔值 2.2.4 日期 2.3 常见指令 2.3.2 assign 2.3…

国产仿日立高速离心瓶250ml/500ml/1000ml日立通用离心杯

国产仿日立高速离心瓶250ml/500ml/1000ml日立离心机通用离心杯 250ml高速离心瓶 货号:ZY1136229 材质:PPCO 外径:61 mm 高度:130mm 500ml高速离心瓶 货号:ZY1136219 材质:PPCO 外径:73m…

大模型应用_FastGPT

1 功能 整体功能,想解决什么问题 官方说明:FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!个人体会…

【map】【动态规划】LeetCode2713:矩阵中严格递增的单元格数

本文涉及的基础知识点 二分查找算法合集 题目 给你一个下标从 1 开始、大小为 m x n 的整数矩阵 mat,你可以选择任一单元格作为 起始单元格 。 从起始单元格出发,你可以移动到 同一行或同一列 中的任何其他单元格,但前提是目标单元格的值 …

UML-认识6种箭头(画类图无烦恼)

文章目录 一、背景二、箭头详解2.1 泛化(Generalization)2.2 实现(Realize)2.3 依赖(Dependency)2.4 关联(Association)2.5 聚合(Aggregation)2.6 组合&#…

npm安装,idea中启动vue失败

node 设置配置之后,要查询时,会从.npmrc中读取路径 .npmrc自己创建的(默认情况下.npmrc会创建在C盘中) 我创建的在D:\studay-and-working\node16.14\node_modules\npm中 指定.npmrc文件,因为默认会访问C盘的.npmrc文件…

现代雷达车载应用——第2章 汽车雷达系统原理 2.4节 雷达波形和信号处理

经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.4 雷达波形和信号处理 对于连续波雷达来说,波形决定了其基本信号处理流程以及一些关键功能。本节将以FMCW波形为例,讨论信号…

# 和 $ 的区别①

# 和 $ 都是为了获取变量的值 # 和 $ 区别 : 使用 # 查询 id 为 1 的内容 如果看不懂代码,就去看<<Mybatis 的操作(结合上文)续集>>,我这里为了简练一点就不多解释了 Select("select * from userInfo where id #{id}")UserInfo selectOne(Integer id…

2023版本QT学习记录 -1- 手写登录注册界面(信号与槽)

登录界面图片 登录界面设计 分别创建如下图的&#xff0c;一个文本框&#xff0c;两个输入框&#xff0c;两个按键 注册界面图片 注册界面设计 分别创建如下图的&#xff0c;一个文本框&#xff0c;两个输入框&#xff0c;两个按键 设计子框&#xff08;也就是注册页面&…

机器视觉系统选型-线光源分类及应用场景

标准线光源 从线性LED的发光面照射漫射光 玻璃划痕检测印刷字符检测手机屏幕检测PCB板检测 高亮线光源 从线性LED的发光面照射高亮度漫射光高速流水线检测表面印刷检测表面缺陷检测 集光型线光源 从线性LED的发光面照射直射光划痕缺陷检测印刷字符检测布料检测 同轴线光源 与相…

做数据分析为何要学统计学(2)——如何估计总体概率分布

我们可以通过手头掌握的样本来估计总体的概率分布。这个过程由以下步骤组成。 第一步&#xff0c;我们采用Seaborn软件的histplot函数建立核密度图&#xff08;一种概率密度图&#xff09;。 import numpy as np #输入样本数据 xnp.array([2.12906357, 0.72736725, 1.0515282…

Simple Water Caustic Pattern In Unity ShaderGpaph

shadertoy上有各种神奇的效果&#xff0c;以我的见识根本想象不到这些是怎么弄出来的。 不过不会做至少可以先会用。 这篇文章抓取一个shadertoy的示例以制作一个测试效果。 参考这篇shadertoy&#xff0c;使用自定义节点装填hlsl的noise代码 Shader - Shadertoy BETA 首先使…

使用FluentAvalonia组件库快速完成Avalonia前端开发

前言 工欲善其事必先利其器,前面我们花了几篇文章介绍了Avalonia框架以及如何在Avalonia框架下面使用PrismAvalonia完成MVV模式的开发。今天我们将介绍一款重磅级的Avalonia前端组件库,里面封装了我们开发中常用的组件,这样就不用我们自己再写组件了。专注业务功能开发,提…

tesseract-ocr安装使用

描述&#xff1a; 在centos上安装 tesseract 并在springboot项目中使用 步骤一&#xff1a;安装 确认使用的版本tesseract和test4j版本需要匹配&#xff0c;这里选择最新版 tesseract5.3.3 &#xff0c;test4j 5.9.0 版本匹配可查看 Releases nguyenq/tess4j GitHub 或…

「Leetcode」滑动窗口—长度最小的子数组

&#x1f4bb;文章目录 &#x1f4c4;题目✏️题目解析 & 思路&#x1f4d3;总结 &#x1f4c4;题目 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …,…

deepstream-python安装

​ 安装deepstream-docker 在这边文章中deepstream-docker详细介绍了如何在Ubuntu下安装deepstream-docker&#xff0c;安装完成之后&#xff0c;为了快速入门deepstream&#xff0c;我们可以安装deepstream-python库&#xff0c;通过阅读相应的例子来快速搭建一个应用。 安…

【Hive】

一、Hive是什么 Hive是一款建立在Hadoop之上的开源数据仓库系统&#xff0c;将Hadoop文件中的结构化、半结构化数据文件映射成一张数据库表&#xff0c;同时提供了一种类SQL语言&#xff08;HQL&#xff09;&#xff0c;用于访问和分析存在Hadoop中的大型数据集。Hive的核心是将…

第一届古剑山ctf-pwn全部题解

1. choice 附件&#xff1a; https://github.com/chounana/ctf/blob/main/2023%E7%AC%AC%E4%B8%80%E5%B1%8A%E5%8F%A4%E5%89%91%E5%B1%B1pwn/choice.zip 漏洞代码&#xff1a; 漏洞成因&#xff1a; byte_804A04C输入的长度可以覆盖nbytes的值&#xff0c;导致后面输入时存…