亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Express實現(xiàn)登錄驗證

 更新時間:2021年10月13日 09:39:09   作者:aiguangyuan  
這篇文章主要為大家詳細(xì)介紹了Express實現(xiàn)登錄驗證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Express實現(xiàn)登錄驗證的具體代碼,供大家參考,具體內(nèi)容如下

Express實現(xiàn)的路由登錄,這套代碼適用于很多場景,特此記錄,以備后用。

首先是主文件: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);
 
// 處理提交的數(shù)據(jù)和文件
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')());   //后臺路由
 
// 靜態(tài)數(shù)據(jù)
server.use(static('./static/'));

以上這是一個整體的結(jié)構(gòu)框架,后續(xù)只需要專注處理路由部分即可,以下是后臺路由部分。

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', {});
    });
    // 根據(jù)業(yè)務(wù)添加路由
    router.use('/banners', require('./banners')());
 
    return router;
};

express的模塊化其實就是按路由一級一級的來定義的,接下來一起來看一下上面代碼中l(wèi)ogin代碼的實現(xiàn).

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) {
                // 返回的數(shù)據(jù)很簡單,實際要返回一個對象
                res.status(500).send('數(shù)據(jù)庫連接錯誤').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');
    }
};

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs的路徑問題的解決

    nodejs的路徑問題的解決

    這篇文章主要介紹了nodejs的路徑問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • express中static中間件的具體使用方法

    express中static中間件的具體使用方法

    這篇文章主要介紹了express中static中間件的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 使用 Node.js 實現(xiàn)圖片的動態(tài)裁切及算法實例代碼詳解

    使用 Node.js 實現(xiàn)圖片的動態(tài)裁切及算法實例代碼詳解

    這篇文章主要介紹了使用 Node.js 實現(xiàn)圖片的動態(tài)裁切功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Node.js與Sails redis組件的使用教程

    Node.js與Sails redis組件的使用教程

    這篇文章主要介紹了Node.js與Sails redis組件的使用教程,主要介紹幾個用法,為string,set,hash和list的使用。需要的朋友可以參考下
    2017-02-02
  • Node8中AsyncHooks異步生命周期

    Node8中AsyncHooks異步生命周期

    這篇文章主要介紹了Node8中AsyncHooks異步生命周期,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 詳解NodeJs支付寶移動支付簽名及驗簽

    詳解NodeJs支付寶移動支付簽名及驗簽

    本文主要介紹了NodeJs支付寶移動支付簽名及驗簽的方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Mongoose經(jīng)常返回e11000 error的原因分析

    Mongoose經(jīng)常返回e11000 error的原因分析

    這篇文章主要給大家分析了Mongoose經(jīng)常返回e11000 error的原因,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友可以們下面來一起看看吧。
    2017-03-03
  • node中使用log4js4.x版本記錄日志的方法

    node中使用log4js4.x版本記錄日志的方法

    這篇文章主要介紹了node中使用log4js4.x版本記錄日志的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 詳解NODEJS基于FFMPEG視頻推流測試

    詳解NODEJS基于FFMPEG視頻推流測試

    本篇文章主要介紹了詳解NODEJS基于FFMPEG視頻推流測試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 在Node.js中使用TypeScript的方法示例

    在Node.js中使用TypeScript的方法示例

    在前端開發(fā)中,隨著TypeScript的不斷普及,越來越多的開發(fā)者使用TypeScript進(jìn)行開發(fā),然而,在后端開發(fā)中,在Node.js中使用 TypeScript還是相對較少見的,這篇文章將介紹如何在Node.js中配置TypeScript ,以及如何使用TypeScript來開發(fā)高質(zhì)量的應(yīng)用程序
    2023-06-06

最新評論