Node.JS 就是一个运行在服务端的 JavaScript, 也就是说 Node.JS 实现了使用 JS 编写服务端的功能, 如果你对编程语言的进行深入了解的仅有 JavaScript 的话, 那么我推荐你可以了解一下 Node.JS, 这样你在仅仅使用 JS 的情况下就可以进行全栈的开发.
express 是一个比较小的 web 开发框架, 也是目前我们公司用的比较多的一个框架, 使用 Node.JS+express 可以很简洁的完成后端接口, 使用 express 的话也比较方便.
Node.JS 项目实现登录加密的方法如下:
安装 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 是一个连接数据库和访问数据库的框架, 在 Node.JS 中使用 sequlize 可以非常方便的进行连接和操作数据库, 甚至可以抛弃最常用的 sql 语句, 使用自身所提供的各种方法进行数据的增删改查, 让代码看起来更加的一致和简洁. 学习的话主要推荐两个网址一个是官网, 另外一个是中文版的 API 文档方便查找, 不过想要深入了解建议研读官网.
功能实现
注册和登录的功能相比较其他功能简单一些;
注册加密流程图:
登录加密流程图:
注册
直接上代码了, 关键点会在代码中注释出来:
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)
- }
- })
测试后台输出:
数据库中数据:
登录:
- 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!"
- });
- }
- }
- });
- });
测试结果:
来源: http://www.css88.com/qa/node-js/10795.html