云端编程 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会自动创建。数据库就是左边这个集合,它是一个可视化的的数据库。
效果展示
- 当用户名不符合规范时,会报错
- 当用户名重名时会报错
- 运行成功时,密码以密文存储,并存储在数据库
这样我们一个简单的后端项目就完成了
结语
如果觉得这篇文章有帮助的宝子们记得给我点点赞哦,你们的鼓励是我最大的动力。