1. 注册的业务
1.1 前端的场景
1. 我们是使用layui的框架自带的表单校验, 让我们输入的用户名和密码有效,减少http无效请求的次数,必须做的优化
2. 使用jquery的ajax函数,发起请求; 将我们的 用户名和密码 两个参数传递给后端
$.post('/api/reguser', data, function(res) {
if (res.status !== 0) {
return layer.msg(res.message)
}
layer.msg('注册成功,请登录!')
// 模拟人的点击行为
$('#link_login').click()
})
1.2 后端的场景
1.检测表单数据是否合法 if(username && password)
2.检测用户名是否被占用 使用sql语句 select * from ev_users where username=?
3.对密码进行加密处理 bcryptjs
4.插入新用户 insert into ev_users set ?
2. 登录的业务
2.1 前端
输入用户名和密码,发起登录请求。 服务器返回一个token值; 前端把它储存在localStorage里面; 然后再所有请求的请求头里面 Authorization:localStorage.getItem('token'); 这样每一个请求都会携带一个身份
2.2后端
1.检测表单数据是否合法
2.根据用户名查询用户的数据
3.判断用户输入的密码是否正确
4.生成 JWT 的 Token 字符串
3. 项目中使用的第三方包
1. mysql ---- 在nodejs代码里面,链接外部数据库使用的一个js包
2. bcryptjs ----- 这个包是 对密码进行加密的包, 不可以逆解析, 数据库储存的都是密文, 不是明文
3. @hapi/joi ----- 这个包就是 对前端用户传递过来的值 进行 校验的库, 不需要自己写一些if...else
4. jsonwebtoken ---- 这个包是生成 token值的一个包, 主要做身份认证使用
5. express-jwt ---- 这个就是将用户传递过来的token值 逆解析出来使用
我们在使用npm i xxx安装的时候,就是安装的上面这个 有具体功能的包
面试的一些问题?
-
你们之前表单校验是怎么处理的? 我以前使用过layui框架,里面自带的有form验证。 我还自己写过一些nodejs的demo的程序, 使用过joi这个第三方包进行数据的校验;
joi.number().integer().min(1).required() joi.string().required() joi.string().email().required()