53 Node.js => [ 大事件]

314 阅读2分钟

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.生成 JWTToken 字符串

3. 项目中使用的第三方包

1. mysql   ----  在nodejs代码里面,链接外部数据库使用的一个js包
2. bcryptjs   -----   这个包是 对密码进行加密的包, 不可以逆解析, 数据库储存的都是密文, 不是明文
3. @hapi/joi  -----   这个包就是 对前端用户传递过来的值 进行 校验的库, 不需要自己写一些if...else
4. jsonwebtoken ----  这个包是生成 token值的一个包, 主要做身份认证使用
5. express-jwt  ----  这个就是将用户传递过来的token值  逆解析出来使用

我们在使用npm i xxx安装的时候,就是安装的上面这个 有具体功能的包

面试的一些问题?

  1. 你们之前表单校验是怎么处理的? 我以前使用过layui框架,里面自带的有form验证。 我还自己写过一些nodejs的demo的程序, 使用过joi这个第三方包进行数据的校验;

    joi.number().integer().min(1).required()
    joi.string().required()
    joi.string().email().required()