nodejs项目登录如何加密? - 网站

nodejs项目登录如何加密?

分类:Node.js常见问题 · 发布时间:2019-08-05 16:28 · 阅读:2059

nodejs就是一个运行在服务端的JavaScript,也就是说nodejs实现了使用js编写服务端的功能,如果你对编程语言的进行深入了解的仅有JavaScript的话,那么我推荐你可以了解一下nodejs,这样你在仅仅使用js的情况下就可以进行全栈的开发。

express是一个比较小的web开发框架,也是目前我们公司用的比较多的一个框架,使用nodejs+express可以很简洁的完成后端接口,使用express的话也比较方便。

nodejs项目实现登录加密的方法如下:

安装express

$ mkdir myapp//创建文件夹
$ cd myapp//进入文件夹内
$ npm install express --save//安装express

进行简单的接口编写

const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => console.log('Example app listening on port 3000!'))

上述代码表示监听的为3000端口,使用'node app.js'命令将项目启动,进入浏览器或接口测试工具postman中输入127.0.0.1:3000即可获取上述第三行代码中的返回值'hello world!'

sequelize介绍

sequelize是一个连接数据库和访问数据库的框架,在nodejs中使用sequlize可以非常方便的进行连接和操作数据库,甚至可以抛弃最常用的sql语句,使用自身所提供的各种方法进行数据的增删改查,让代码看起来更加的一致和简洁。学习的话主要推荐两个网址一个是官网,另外一个是中文版的api文档方便查找,不过想要深入了解建议研读官网。

功能实现

注册和登录的功能相比较其他功能简单一些;
注册加密流程图:

2.jpg-600

登录加密流程图:

3.jpg-600

注册

直接上代码了,关键点会在代码中注释出来:
bcryptjs的安装方式npm install bcryptjs , bcryptjs的npm地址

const bcrypt = require('bcryptjs');//引入bcryptjs
app.post('/addUser', function (req, res, next) {
    var salt = bcrypt.genSaltSync(10);//设置加密等级,如果不设置默认为10,最高为10
    res.setHeader('Access-Control-Allow-Origin', '*');
    try {
        let name = req.body.username;
        let password = req.body.password;
        var hash = bcrypt.hashSync(password, salt);//将获取到的密码进行加密,得到密文hash
        console.log("name:---->", name, "password:--->", password, "hash:---->", hash);
        if (!name || !password) {
            res.send({
                "code": 200,
                "message": L10N.ERROR_PARAMETER
            });
            return next();
        }
        db.addUser(name, hash);//将用户名和密文一同插入至数据库中
        res.send({
            "code": 200,
            "message": "Success"
        })
    } catch (err) {
        next(err)
    }
})

测试后台输出:

1 (2).jpg-600数据库中数据:

4.jpg-600

登录:

app.get('/login', function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    db.login(req.body.username, req.body.password).then(userinfo => {//根据用户名获取数据库中的密文
        if (userinfo == null && userinfo) {
            res.status(200).send({
                "code": 200,
                "message": L10N.ERROR_USER_PASSWD
            });
        } else {
            let password = userinfo.password;//获取密文
            if (bcrypt.compareSync(req.body.password, password)) {//将输入的密码与密文进行比对
                res.status(200).send({
                    "code": 200,
                    "message": "success!"
                });
            } else {
                res.status(200).send({
                    "code": 200,
                    "message": "error!"
                });
            }
        }
    });
});

测试结果:

5.jpg-600

标签:
nodejs

相关文章

如何设置 nodejs 的环境变量

在前端开发过程中,我们需要对 application 运行的环境进行设置,一般会包括开发环境development,生产环境production,每个环境可以对应不同的一些配置,例如不同环境下请求的地址...

谈谈Node.js与JavaScript的差异

Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行。Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台。

npm install安装报错怎么解决?

解决方法:1、报“operation not permitted”错误,通过“npm i 包名 --no-optional”解决;2、报“Missing: chromedriver”错误,表示没有安装chromedriver,安装一下即可。

怎么使用npm下载vue.js?

使用npm下载vue.js的方法:1、安装node.js和npm;2、安装cnpm;3、使用命令cnpm install -g vue-cli来安装即可。

vue.js和node.js是什么关系?

vue.js和node.js并没有关系,vue.js是前端框架,算是js的三大框架之一吧,node.js是后端开发语言,同php、java、c#一样的。但是他们可以配合使用。

返回分类 返回首页