app直播源码,Node.js实现密码散列加密
app直播源码,Node.js实现密码散列加密
1. 安装所需的包:
npm i bcryptjs --save
2. 修改MongoDB中的模型:
// /models/AdminUser.js
const mongoose = require('mongoose')
// 定义模型的字段
const schema = new mongoose.Schema({
username: { //用户名
type: String,
unique: true,
},
password: { //密码,进行散列加密
type: String,
select: false, //让密码在界面中默认无法查询到
set(val) {
return require('bcryptjs').hashSync(val, 10) //第一个参数是这个值,第二个参数是散列的加密指数
},
},
})
// 导出mongoose模型
module.exports = mongoose.model('AdminUser', schema)
3. 实现登录功能:
# 用于做webtoken验证
npm i jsonwebtoken
// /routes/admin/index.js
// module.exports导出一个函数,参数接收函数对象,在里面就可以用最外层的app
module.exports = app => {
//登录
app.post('/admin/api/login', async (req, res) => {
const {
username,
password
} = req.body
//1、根据用户名找用户,查的时候把password字段取出来
const AdminUser = require('../../models/AdminUser')
const user = await AdminUser.findOne({
username: username
}).select('+password')
if (!user) {
return res.status(422).send({
message: '用户不存在',
})
}
//2、校验密码
const isValid = require('bcryptjs').compareSync(password, user.password) //比较明文和密文是否匹配
if (!isValid) {
return res.status(422).send({
message: '密码错误',
})
}
//3、返回token
const jwt = require('jsonwebtoken')
const token = jwt.sign({ //生成一个token
id: user._id
}, app.get('secret'))
res.send({ //把token返回给客户端
token
})
})
}
以上就是 app直播源码,Node.js实现密码散列加密,更多内容欢迎关注之后的文章