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()