提示:學習express,搭建管理系統
文章目錄
- 前言
- 一、修改models/user.js
- 二、修改routes下的user.js
- 三、Api新建user/login接口
- 四、刪除數據庫原有數據,添加新驗證規則的用戶
- 四、用戶登錄
- 總結
前言
需求:主要學習express,所以先寫service部分
一、修改models/user.js
const query = require('../config/db');
const bcrypt = require('../config/bcrypt');
const md5 = require('md5');
const secretKey = 'longlongago';const errFun = (msg,code)=>{return {code:code||500,success:false,msg:msg||'操作失敗'}
}
const sucFun = (data,msg)=>{return {code:200,success:true,msg:msg||'操作成功',data,}
}
const userDao = {//注冊register:async(data)=>{//驗證賬號密碼格式const validateResult =userDao.validateUserNameAndPassword(data);if(!validateResult.success)return errFun(validateResult.msg);//查詢用戶名是否已存在const userResult = await userDao.queryUserByUserName(data);if(userResult.success)return errFun('用戶名已存在');//生成userIdconst userId = md5(data.userName+secretKey);//加密passwordconst password = bcrypt.hash(data.password+secretKey);//根據userName查詢userconst sql = `insert into user (userId,userName,password) values('${userId}','${data.userName}','${password}')`;const result = await query(sql);if(result&&result.affectedRows==1)return sucFun({},'添加用戶成功');return errFun('添加用戶失敗');},//登錄login:async(data)=>{//驗證賬號密碼格式const validateResult =userDao.validateUserNameAndPassword(data);if(!validateResult.success)return errFun(validateResult.msg);//查詢用戶是否存在const userResult = await userDao.queryUserByUserName(data);if(!userResult.success)return errFun('用戶名錯誤');//驗證密碼是否正確const comparePassword = bcrypt.compare(data.password+secretKey,userResult.data.password);//生成tokenif(comparePassword)return sucFun({},'登錄成功');return errFun('密碼錯誤');},//通過用戶名查詢用戶信息queryUserByUserName:async(data)=>{//根據userName查詢userconst sql = `select * from user where userName='${data.userName}'`;const result = await query(sql);if(result&&result.length>0)return sucFun(result[0],'查詢用戶成功');return errFun('查詢用戶失敗');},validateUserNameAndPassword:(data)=>{//只包含大小寫字母數字,包含1種即可let nameReg = /[\da-zA-z]{6,16}$/;let nameValidate = nameReg.test(data.userName);if(!nameValidate)return errFun('用戶名格式錯誤');//大寫字母,小寫字母,特殊符號,包含2種以上passwordReg = /^(?![\d]+$)(?![a-z]+$)(?![A-Z]+$)(?![~!@#$%^&*.]+$)[\da-zA-z~!@#$%^&*.]{6,16}$/;let passwordValidate = passwordReg.test(data.password);if(!passwordValidate)return errFun('密碼格式錯誤');return sucFun({},'用戶名和密碼格式正確');},
}module.exports = userDao;
二、修改routes下的user.js
const userDao = require('../models/user');
const userRoutes = (router)=>{router.post('/user/register',async (req,res)=>{const result = await userDao.register(req.body);res.json(result);});router.post('/user/login',async (req,res)=>{const result = await userDao.login(req.body);res.json(result);});
}
module.exports = userRoutes;
三、Api新建user/login接口
url:http://localhost:1990/user/login
name:/user/login
params:{
“userName”: “longlongago1”,
“password”: “long123456”
}
四、刪除數據庫原有數據,添加新驗證規則的用戶
添加用戶
url:http://localhost:1990/user/register
name:/user/register
params:{
“userName”:“longlongago1”,
“password”:“long123456”
}
四、用戶登錄
1、用戶登錄成功
url:http://localhost:1990/user/login
name:/user/login
params:{
“userName”: “longlongago1”,
“password”: “long123456”
}
2、用戶名錯誤
url:http://localhost:1990/user/login
name:/user/login
params:{
“userName”: “longlongago”,
“password”: “long123456”
}
3、密碼錯誤
url:http://localhost:1990/user/login
name:/user/login
params:{
“userName”: “longlongago1”,
“password”: “long12345”
}
總結
踩坑路漫漫長@~@