1、登录流程
登录时候先验证用户是否存在
再验证密码,和存储用户的加密密码是否一致,此处用到插件bcryptjs
现在tools.js中写上验证方法:
const bcrypt = require('bcryptjs')
const tools = {
// 查询密码一致性,返回布尔值
compareSync(p1, p2) {
const result = bcrypt.compareSync(p1, p2)
return result
}
}
module.exports = tools
使用的时候:
/**
* 输入手机号密码作为登录的账号和密码
**/
router.post("/login", async ctx => {
// 先查询账号是否存在
const [user] = await User.find({phone: ctx.request.body.phone})
// 获取传过来的密码
const {request:{body:{password}}} = ctx
if(user) {
// 查询到账号后验证密码一致性
const result = tools.compareSync(password, user.password)
if (result) {
ctx.status = 200
ctx.body = {
code: 200,
msg: '登录成功'
}
} else {
ctx.status = 400
ctx.body = {
code: 400,
msg: '密码错误'
}
}
} else {
ctx.status = 404
ctx.body = {
code: 404,
msg: '用户不存在'
}
}
})
postman模拟结果如图:
2、access_token鉴权
用node做开发,往往需要在登录后像前段返回token,然后前段将获取到的token放在header的Authorization上。
相关内容在下一章。