Express实现登录验证
更新时间:2021年10月13日 09:39:09 作者:aiguangyuan
这篇文章主要为大家详细介绍了Express实现登录验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Express实现登录验证的具体代码,供大家参考,具体内容如下
Express实现的路由登录,这套代码适用于很多场景,特此记录,以备后用。
首先是主文件:server.js
const express = require('express'); const static = require('express-static'); const bodyParser = require('body-parser'); const multer = require('multer'); // 配置文件上传的路径,此处为本地地址 const multerObj = multer({ dest: './static/upload' }); const cookieParser = require('cookie-parser'); const cookieSession = require('cookie-session'); const consolidate = require('consolidate'); // 子路由的页面需要使用,此处确保已安装 const expressRoute = require('express-route'); const mysql = require('mysql'); var server = express(); server.listen(8080); // 处理提交的数据和文件 server.use(bodyParser.urlencoded()); server.use(multerObj.any()); // cookie及签名处理 server.use(cookieParser()); (function () { var keys = []; for (var i = 0; i < 100000; i++) { keys[i] = 'secret' + Math.random(); }; server.use(cookieSession({ name: 'session_id', keys: keys, maxAge: 20 * 60 * 1000 })); })(); // 模板渲染 server.engine('html', consolidate.ejs); server.set('views', 'template'); server.set('view engine', 'html'); // 路由拆分 server.use('/', require('./route/web/index.js')()); //前台路由 server.use('/admin/', require('./route/admin/index.js')()); //后台路由 // 静态数据 server.use(static('./static/'));
以上这是一个整体的结构框架,后续只需要专注处理路由部分即可,以下是后台路由部分。
const express = require('express'); module.exports = function () { var router = express.Router(); // 未登录前 router.use((req, res, next) => { if (!req.session['admin_id'] && req.url != '/login') { res.redirect('/admin/login'); } else { next(); } }); router.use('/login', require('./login')()); // 正常登录后后其它路由 router.get('/', (req, res) => { res.render('admin/index.ejs', {}); }); // 根据业务添加路由 router.use('/banners', require('./banners')()); return router; };
express的模块化其实就是按路由一级一级的来定义的,接下来一起来看一下上面代码中login代码的实现.
const express = require('express'); // 封装的公共方法(md5)加密模块 const common = require('../../libs/common'); const mysql = require('mysql'); var db = mysql.createPool({ host: 'localhost', user: 'root', password: '123456', database: 'blog' }); module.exports = function () { var router = express.Router(); router.get('/', (req, res) => { res.render('admin/login.ejs', {}); }); router.post('/', (req, res) => { var username = req.body.username; var password = common.md5(req.body.password + common.MD5_SUFFIX); db.query(`SELECT * FROM admin_table WHERE username='${username}'`, (err, data) => { if (err) { // 返回的数据很简单,实际要返回一个对象 res.status(500).send('数据库连接错误').end(); } else { if (data.length == 0) { res.status(400).send('管理员不存在').end(); } else { if (data[0].password == password) { req.session['admin_id'] = data[0].ID; res.redirect('/admin/'); } else { res.status(400).send('密码错误').end(); } } } }); }); return router; };
大家可能注意到上面的代码中有个common模块的引入,这个文件主要是定义了一些公共的方法,如md5加密方法。
const crypto = require('crypto'); module.exports = { MD5_SUFFIX: 'FDSW$t34tregt5tO&$(#RHuyoyiUYE*&OI$HRLuy87odlfh)', md5: function (str) { var obj = crypto.createHash('md5'); obj.update(str); return obj.digest('hex'); } };
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Express + Session 实现登录验证功能
- Nodejs进阶:express+session实现简易登录身份认证
- Node.js+Express+MySql实现用户登录注册功能
- 用node和express连接mysql实现登录注册的实现代码
- Node+Express+MongoDB实现登录注册功能实例
- express框架中使用jwt实现验证的方法
- express + jwt + postMan验证实现持久化登录
- Vue+Express实现登录状态权限验证的示例代码
- nodejs使用express获取get和post传值及session验证的方法
- DevExpress实现GridControl单元格编辑验证的方法
相关文章
Nodejs使用fs-extra模块进行目录和文件操作用法示例
fs-extra模块是基于fs 的文件操作相关工具库,封装了一些fs实现起来相对复杂的工具,下面这篇文章主要给大家介绍了关于Nodejs使用fs-extra模块进行目录和文件操作用法的相关资料,需要的朋友可以参考下2024-06-06Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Node.js v8.0.0 已正式发布。v8.0.0 是下一个主要的版本,带来了一系列重大的变化和新功能,内容十分多!下面这篇文章主要带着大家一起看看Node.js v8.0.0带来了哪些主要新特性,需要的朋友可以参考借鉴,下面来一起看看吧。2017-06-06node.js中对Event Loop事件循环的理解与应用实例分析
这篇文章主要介绍了node.js中对Event Loop事件循环的理解与应用,结合实例形式分析了node.js中Event Loop事件循环相关原理、使用方法及操作注意事项,需要的朋友可以参考下2020-02-02
最新评论