app直播源码,Node.js实现密码散列加密

发布时间 2023-04-18 14:20:15作者: 云豹科技-苏凌霄

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实现密码散列加密,更多内容欢迎关注之后的文章