express+node+mysql简单博客系统(一):登录接口
2021/11/18 19:40:53
本文主要是介绍express+node+mysql简单博客系统(一):登录接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今年一直想学一下node,现在马上就到年底了,赶紧安排!
准备
使用node、express和mysql开发简单的博客系统:
1、先安装node、express和mysql;
2、创建node项目,也就是博客的后端项目;
安装node和express后就直接可以使用express命令来创建项目了:
express blog-admin-api
在目录下找到app.js,就是整个项目的入口文件
routes目录是路由。
在bin目录里的www文件可以修改端口号等。
constant存放定义的常量文件目录,controllers是接口的逻辑编辑。
这就是基本的文件目录。接下来开始链接mysql
链接mysql
创建config.js,设置链接mysql的参数,如host、用户名和密码等:
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-08-08 17:41:35 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-11-17 22:42:36 * @Description: 链接数据库 */ const mysql = require("mysql"); const config = { database: 'blog', username: 'root', password: '1234567', host: 'localhost', port: 3306 } const pool = mysql.createConnection({ host: config.host, port: config.port, user: config.username, password: config.password, database: config.database }) //开始连接数据库 pool.connect(function (err) { if (err) { console.log('[query] - :' + err); } console.log('[pool connect] succeed!'); }); module.exports = pool;
登录的接口
1、先在routes目录下创建index.js,声明登录/login
的API:
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-08-08 17:41:35 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-11-17 23:47:32 * @Description: login——api */ var express = require('express'); const loginController = require("../controllers/index"); var router = express.Router(); router.post('/login', loginController.login) module.exports = router;
2、编写login的controllers,就是loginController:
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-10-02 17:07:45 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-11-17 23:19:08 * @Description: 登录接口 */ const Common = require('./common'); const Constant = require("../constant/constant"); const dateFormat = require('dateformat'); const Token = require('./token'); const pool = require('../config') const TOKEN_EXPRESS_SENCOND = 360000000; // token有效期 const login = (req, res) => { const sql = `select * from admin where username='${req.body.username}' and password='${req.body.password}'` const resObj = Common.clone(Constant.DEFAULT_SUCCESS); pool.query(sql, (err, result) => { if (err) { res.send(Constant.DEFAULT_LOGIN_FAIL) return; } if(result){ let token=Token.encrypt({id:result[0].id,TOKEN_EXPRESS_SENCOND}) resObj.data={ id: result[0].id, username: result[0].username, name: result[0].name, role: result[0].role, lastLoginAt: dateFormat(result[0].last_login_at, 'yyyy-mm-dd HH:MM:ss'), createAt: dateFormat(result[0].created_at, 'yyyy-mm-dd HH:MM:ss'), updateAt: dateFormat(result[0].updated_at, 'yyyy-mm-dd HH:MM:ss') }; resObj.data.token = token; res.send(resObj); } }) } module.exports = { login };
其中common是声明公共方法的地方,例如clone函数
token
常见的登录会返回token,用来验证其他接口,所以这里需要安装第三方库jsonwebtoken
,主要是根据当前登录用户的某个信息进行加密生成token。
token.js
代码:
const jwt = require("jsonwebtoken"); const tokenKey = "DFJdjfbjw356weg324erbgjsdhfdhdfbSAJHIHihIOHIUHLIJIOOIoihuiHIOHKJKIFFVnjkhuU"; const Token = { /** * Token加密方法 * @param {*} data 加密在token上的数据 * @param {*} time Token的过期时间,单位ms */ encrypt: function (data) { return jwt.sign(data, tokenKey, { expiresIn: 3600 }) }, /** * 解密方法 * @param {*} token 加密之后的Token * reurns返回对象 {{ * token:boolean (true表示Token合法) * data:解密出来的数据或者是错误信息 * }} */ decrypt: function (token) { try { let data = jwt.verify(token, tokenKey); return { token: true, data: data } } catch (error) { return { token: false, data: error } } } } module.exports = Token;
tokenKey是我们自己设置的一个密钥。
结束
启动mysql,一般是安装后就启动了!
启动node服务node ./bin/www
最后用postman验证一下登录接口:
结果如下:
成功了!
这篇关于express+node+mysql简单博客系统(一):登录接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程