1、登录流程

登录时候先验证用户是否存在
再验证密码,和存储用户的加密密码是否一致,此处用到插件bcryptjs

现在tools.js中写上验证方法:

  1. const bcrypt = require('bcryptjs')
  2. const tools = {
  3. // 查询密码一致性,返回布尔值
  4. compareSync(p1, p2) {
  5. const result = bcrypt.compareSync(p1, p2)
  6. return result
  7. }
  8. }
  9. module.exports = tools

使用的时候:

  1. /**
  2. * 输入手机号密码作为登录的账号和密码
  3. **/
  4. router.post("/login", async ctx => {
  5. // 先查询账号是否存在
  6. const [user] = await User.find({phone: ctx.request.body.phone})
  7. // 获取传过来的密码
  8. const {request:{body:{password}}} = ctx
  9. if(user) {
  10. // 查询到账号后验证密码一致性
  11. const result = tools.compareSync(password, user.password)
  12. if (result) {
  13. ctx.status = 200
  14. ctx.body = {
  15. code: 200,
  16. msg: '登录成功'
  17. }
  18. } else {
  19. ctx.status = 400
  20. ctx.body = {
  21. code: 400,
  22. msg: '密码错误'
  23. }
  24. }
  25. } else {
  26. ctx.status = 404
  27. ctx.body = {
  28. code: 404,
  29. msg: '用户不存在'
  30. }
  31. }
  32. })

postman模拟结果如图:
image.png

2、access_token鉴权

用node做开发,往往需要在登录后像前段返回token,然后前段将获取到的token放在header的Authorization上。
相关内容在下一章。