首页 > 编程语言 >app直播源码,Node.js实现密码散列加密

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

时间:2023-04-18 14:24:10浏览次数:48  
标签:Node const app js 密码 源码 password 散列

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

 

标签:Node,const,app,js,密码,源码,password,散列
From: https://www.cnblogs.com/yunbaomengnan/p/17329375.html

相关文章

  • 从源码角度深入解析Callable接口
    摘要:从源码角度深入解析Callable接口,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小。本文分享自华为云社区《一个Callable接口能有多少知识点?》,作者:冰河。并发编程一直是程序员们比较头疼的,如何编写正确的并发程序相比其他程序来说,是一件比较困难的事情,并发编......
  • asp.net mvc 之旅 —— 第五站 从源码中分析asp.net mvc 中的TempData
    在mvc的controller中,我们知道有很多的临时变量存放数据,比如说viewData,viewBag,还有一个比较特殊的tempData,关于前两个或许大家都明白,基本上是一个东西,就是各自的编程写法不一样,最终都会放到viewContext中,然后送到WebPage中,如果你要证明的话,可以看下下面的......
  • 从源码角度深入解析Callable接口
    摘要:从源码角度深入解析Callable接口,希望大家踏下心来,打开你的IDE,跟着文章看源码,相信你一定收获不小。本文分享自华为云社区《一个Callable接口能有多少知识点?》,作者:冰河。并发编程一直是程序员们比较头疼的,如何编写正确的并发程序相比其他程序来说,是一件比较困难的事情,并发编程......
  • asp.net mvc 之旅 —— 第六站 ActionFilter的应用及源码分析
       这篇文章我们开始看一下ActionFilter,从名字上其实就大概知道ActionFilter就是Action上的Filter,对吧,那么Action上的Filter大概有几个呢???这个问题其实还是蛮简单的,因为我们听说Mvc本身就是一个扩展性极强的框架,自然就是层层有拦截,层层有过滤,对吧,比如我们看到的如下Control......
  • 解决 Error running ‘Application‘: Command line is too long.
    一、项目场景:运行刚拉取下来的项目代码,出现下面问题描述的错误提示。二、问题描述Errorrunning'Application':Commandlineistoolong.ShortencommandlineforApplicationoralsoforSpringBootdefaultconfiguration?翻译翻译:运行“Application”时出错:命令行太长......
  • uniapp运行app项目无法连接到手机
    1.手机需要打开开发者模式2.adb端口占用(从任务管理器中结束进程) uniapp项目真机调试遇到的问题(持续更新中)-简书(jianshu.com)解决端口占用问题-简书(jianshu.com)......
  • Java-Day-10(Object 常用类 + JDK 源码 + 断点调试)
    Java-Day-10Object常用类equals方法==与equals==是一个比较运算符既可以判断基本类型,又可以判断引用类型如果判断基本类型,判断的是值是否相等如果判断引用类型,判断的就是地址是否相同,即判断是否是一个对象equals是Object类中的方法,只能判断引用类型默认......
  • wangeditor5 vue2 安装后运行报错 Error in ./node_modules/@wangeditor/editor/d
    问题解决方法:原因就是引入的链接不对,使用cnpm、npm、pnpm、yarn安装插件的时候,路径都是不一样的,所以要对应着改路径就可以了链接:https://github.com/wangeditor-team/wangEditor/issues/4041......
  • table append 插槽
    <template><el-tableheight='300':data="tableData"style="width:100%"><el-table-columnprop="date"label="Date"width="180"/><el-table-columnprop="name&q......
  • 超级App与新零售:零售品牌如何利用小程序技术掌握未来商业机会?
    超级App的概念在全球范围内逐渐被接受和采用。 超级App是指一种综合性的应用程序,允许用户在同一个平台上访问多个不同的服务,包括支付、社交媒体、出行、点餐等等。它的发源地是东南亚地区,如中国的微信、印度的Paytm和印尼的Gojek等应用,但随着其成功的案例在全球范围内的推广和......