用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会自动创建。数据库就是左边这个集合,它是一个可视化的的数据库。

效果展示

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

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

结语

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

相关推荐
也无晴也无风雨28 分钟前
深入剖析输入URL按下回车,浏览器做了什么
前端·后端·计算机网络
Martin -Tang1 小时前
Vue 3 中,ref 和 reactive的区别
前端·javascript·vue.js
FakeOccupational3 小时前
nodejs 020: React语法规则 props和state
前端·javascript·react.js
放逐者-保持本心,方可放逐3 小时前
react 组件应用
开发语言·前端·javascript·react.js·前端框架
曹天骄4 小时前
next中服务端组件共享接口数据
前端·javascript·react.js
2401_857610034 小时前
多维视角下的知识管理:Spring Boot应用
java·spring boot·后端
阮少年、4 小时前
java后台生成模拟聊天截图并返回给前端
java·开发语言·前端
代码小鑫4 小时前
A027-基于Spring Boot的农事管理系统
java·开发语言·数据库·spring boot·后端·毕业设计
颜淡慕潇5 小时前
【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
后端·云原生·容器·kubernetes·问题解决
郝晨妤5 小时前
鸿蒙ArkTS和TS有什么区别?
前端·javascript·typescript·鸿蒙