用laf完成简单的后端项目 user-login 向云端的编程

云端编程 laf 完成后端项目user-login

哈喽哈喽,我是你们的金樽清酒。最近我玩了一玩一个有趣的东西,那就是laf,一个可以实现全栈的网站。简单易上手,学会laf后,你可以体验到在云端编程的快乐。

什么是laf

首先,什么是laf。在我们不知道一个东西的时候是不是要问问度娘。诶,你就那么一搜。就会出现一个网站。

这!!! 就是laf,一个开源的云开发平台。可以实现简单的全栈项目。里面有云函数,有数据库,有存储库。这些功能啊,等着你自己慢慢的去玩。

好,让我们点开这个laf,点击立即开发。

然后点击新建项目就可以开发你的项目了。记住要实名认证哦!!!

后端项目 user-login

首先遵循前后端分离的思想,今天我们就完成一个纯粹的后端项目。

  • 获取前端的信息,laf接口调试

laf开发界面的右边有一个接口调试,从这里我们可以完成前后端的http请求,在这里我们需要得到前端的数据,请求方式为post,然后body中写好我们的数据,我们要写的用户登录,需要用户输入用户名和密码。然后通过接口请求让后端拿到数据。

  • 后端编写云函数,获取用户名并查重,验证密码和用户名的规范-永远不要相信用户。并将信息存入数据库。
js 复制代码
import cloud from '@lafjs/cloud'
//node 内置的crypto加密模块
import { createHash } from 'crypto'
export default async function (ctx: FunctionContext) {
  //拿到请求体里的username和password? req
  const { username, password } = ctx.body
  //永远不要相信用户的输入
  //正则表达式
  if (!/^[a-zA-Z0-9]{3,16}$/.test(username)) return {
    error: "invalid username"
  }
  if (!/^[a-zA-Z0-9]{3,16}$/.test(password)) return {
    error: "invalid password"
  }
  // console.log(
  //   createHash("sha256").update(password).digest("hex")
  // )
  const db = cloud.database()
  //用户名是否存在?
  const exists = await db
    .collection("users")
    .where({ username: username })
    .count()
  console.log(exists)
  if (exists.total>0) 
  return {error:"username already existed"}
  const { id } = await db.collection("users").add({
    username: username,
    password:
      createHash("sha256").update(password).digest("hex")
  })
  return { data: id }
  //用户的明文密码不能存   单向加密  比对加密过后

}

代码要点分析

  • 首先我们需要的数据在laf的ctx.body里面,代码第6行,我们要拿到请求体,并结构出需要的username和password

  • 永远不要相信用户,要把用户当小白,当用户的用户名和密码出错了怎么办,那肯定要验证啊!正则表达式验证,如9行-14行,如果不符合就报错。

  • 检测用户名是否已经存在。如何检测呢?那肯定是要到数据库比对的,然后再进行计数,如果用户名总数大于0,那就已经重复了。

  • 密码明文要加密成密文。我们存的用户密码必须是密文,不然有很大的安全隐患的。为什么呢?因为很多人为了方便记忆用的同一个密码,万一数据库被盗了很多数据都将泄密,所以安全是第一位。我们要对明文密码进行加密再存入数据库。如30行的代码,用的就是一种单向加密技术,只有密码一样,密文才会一样。

  • 存入数据库。首先要创建一个数据库。代码18行就是创建了一个数据库。27行到32行是存入数据库。之前没有创建user数据库也没有关系,laf会自动创建。数据库就是左边这个集合,它是一个可视化的的数据库。

效果展示

  • 当用户名不符合规范时,会报错
  • 当用户名重名时会报错
  • 运行成功时,密码以密文存储,并存储在数据库

这样我们一个简单的后端项目就完成了

结语

如果觉得这篇文章有帮助的宝子们记得给我点点赞哦,你们的鼓励是我最大的动力。

相关推荐
最贪吃的虎19 分钟前
什么是开源?小白如何快速学会开源协作流程并参与项目
java·前端·后端·开源
裴嘉靖20 分钟前
Vue + ECharts 实现图表导出为图片功能详解
前端·vue.js·echarts
用泥种荷花21 分钟前
【LangChain学习笔记】输出解析器
前端
闲云一鹤1 小时前
Cesium 使用 Turf 实现坐标点移动(偏移)
前端·gis·cesium
Thomas游戏开发1 小时前
Unity3D IL2CPP如何调用Burst
前端·后端·架构
想学后端的前端工程师1 小时前
【微前端架构实战指南:从原理到落地】
前端·架构·状态模式
货拉拉技术1 小时前
货拉拉离线大数据迁移-验数篇
后端·架构
用户6802659051191 小时前
如何利用 Endpoint Central 提高企业终端管理效率
javascript·后端·面试
Keya1 小时前
DevEco Studio 使用技巧全面解析
前端·前端框架·harmonyos