性格测评小程序07用户登录

news/2025/2/21 14:10:54/

目录

  • 1 创建登录页
  • 2 在首页检查登录状态
  • 3 搭建登录功能
  • 最终效果
  • 总结

小程序注册功能开发好了之后,就需要考虑登录的问题。首先要考虑谁作为首页,如果把登录页作为首页,比较简单,每次访问的时候都需要登录。

如果把功能页作为首页,那就需要判断用户是否登录,未登录的时候需要重定向到登录页。本篇我们讲解一下如何实现用户登录。

1 创建登录页

打开我们的测评小程序,点击创建页面的图标,创建登录页
在这里插入图片描述
在这里插入图片描述

2 在首页检查登录状态

当用户访问首页的时候,要看一下当前用户是否登录。是否登录我们通过检查全局变量,userid是否为空来进行判断。

切换到首页,点击代码区,创建自定义变量
在这里插入图片描述
在这里插入图片描述
为了避免每次打开首页都需要登录,打开持久化配置
在这里插入图片描述
选中页面组件,设置页面显示的时候的事件
在这里插入图片描述
先设置逻辑分支
在这里插入图片描述
表达式设置为判断用户的标识是否为空
在这里插入图片描述

If($w.IsEmpty($w.app.dataset.state.userid), true, false)

为空的时候我们就重定向到登录页面
在这里插入图片描述

3 搭建登录功能

在登录页,添加表单容器,数据源选择用户表
在这里插入图片描述
保留手机号和密码字段
在这里插入图片描述
打开手机号和密码的必填项配置
在这里插入图片描述
选择表单容器,清除表单容器下的事件
在这里插入图片描述
在代码区,点击新建创建一个javascript方法
在这里插入图片描述
输入如下代码

export default async function ({ event, data }) {const phone = $w.inputPhone1.valueconst password = $w.input1.valueconst encryptPassword = CryptoJS.SHA256(password).toString(CryptoJS.enc.Hex);console.log("encryptPassword",encryptPassword)const result = await $w.cloud.callDataSource({dataSourceName: "Users",methodName: "wedaGetRecordsV2",params: {// 筛选内容,当前筛选的含义为:名字为 "juli" 或者 "foo"filter: {where: {$and: [{sjh: {$eq: phone,},},{password: {$eq: encryptPassword,},},],},},// 排序orderBy: [{createdAt: "asc", // 创建时间,正序},{updateBy: "desc", // 更新时间,倒序},],// 返回字段选择select: {$master: true, // 常见的配置,返回主表},// 返回total字段getCount: true,// 页面大小pageSize: 1,// 当前页面pageNumber: 1,},});console.log("result",result)if (result.total > 0) {$w.app.dataset.state.userid = result.records[0]._idconsole.log("id",result._id)$w.utils.redirectTo({pageId: "index", // 页面 IdpackageName: "", // 主应用为空或不填,子模块填写 子包目录,查找位置 子包编辑器 --- 页面 --- 子包目录params: { key: "value" },});}else{throw '手机号或者密码错误'}
}

然后给按钮设置校验成功事件,调用我们的自定义方法
在这里插入图片描述

在这里插入图片描述

最终效果

当我们访问网页链接的时候,先重定向到登录页
在这里插入图片描述
输入手机号和密码的时候,重定向到首页
在这里插入图片描述

总结

本篇我们介绍了登录逻辑的实现,主要是要灵活运用表单容器。表单容器除了向数据源写入数据外,也可以通过灵活的配置实现想要的业务功能。


http://www.ppmy.cn/news/1573634.html

相关文章

23种设计模式 - 装饰器模式

模式定义 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许动态地为对象添加新功能,而无需修改其结构。它通过将对象包装在装饰器类的实例中,实现功能的灵活扩展,符合开放/封闭原则。 模式结构 抽…

C++ 设计模式-外观模式

外观模式的定义 外观模式是一种 结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是: 封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂…

Node.js前后端交互核心技术全解

一、HTTP通信交互核心实践 1. URI解析与动态路由 原理:URI是资源定位的关键标识,Node.js通过url和querystring模块解析路径和查询参数。 代码示例: const http require(http); const url require(url);const server http.createServer(…

numpy(02 数据类型和数据类型转换)

numpy(01 入门) 目录 一、Python NumPy 数据类型 1.1 NumPy 基本类型 1.2 数据类型对象 (dtype) 1.3 具体实例 二、Numpy数据类型转换 2.1 浮点数据转换 2.2 整型数据转换 2.3 浮点数转整数 一、Python NumPy 数据类型 1.1 NumPy 基本类型 下表列举了常用 NumPy 基…

使用Druid连接池优化Spring Boot应用中的数据库连接

使用Druid连接池优化Spring Boot应用中的数据库连接 使用Druid连接池优化Spring Boot应用中的数据库连接1. 什么是Druid连接池?2. 在Spring Boot中配置Druid连接池2.1 添加依赖2.2 配置Druid连接池2.3 配置参数详解 3. 启用Druid监控4. 总结 使用Druid连接池优化Spr…

如何通过 Homebrew 安装 Qt 并配置环境变量

如何通过 Homebrew 安装 Qt 并配置环境变量 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形界面应用。本文将详细介绍如何在 macOS 上通过 Homebrew 安装 Qt 并配置环境变量,以便在终端和 Qt Creator 中使用 Qt 工具。 步骤 1:安装 Ho…

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…

二、《重学设计模式》-UML类图

UML类图常用的6种关系 依赖泛化(继承)实现关联聚合组合 类图常用表示图 依赖、泛化、实现都是从 依赖谁、继承谁、实现谁,箭头就指向谁 组合和聚合 都是从部分指向整体,菱形都指向整体 关联都是谁关联谁,箭头就指向…