【Node.js-8】一个简单的登录案例

1、整个项目的目录结构如下:
这里写图片描述

2、这里面主要的调整有,还是统一的入口server.js,只不过在这个入口里面利用require把不同的模块路由分开了。这样可以保证主入口文件的简洁。

const express = require('express');
const expressStatic = 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 mysql = require('mysql');

var server = express();
server.use(bodyParser());
server.use(cookieParser());
var keys = [];
for(var i=0;i<10000;i++){
    keys[i]="key_"+Math.random();
}
server.use(cookieSession({
    name:'session_id',
    keys:keys,
    maxAge:20*60*1000
}));

// 模板
server.engine('html',consolidate.ejs);
server.set('view engine','html');
server.set('views','template');

// 路由
server.use('/admin',require('./route/admin.js')());
server.use('/web',require('./route/web.js')());

server.use(expressStatic('./static'));
server.listen(1337);

3、下面就是我们的两个分模块:

const express = require('express');
const md5 = require('md5');
const mysql = require('mysql');

module.exports=function(){
    var router = express.Router();

    router.get('/login',function(req,res){
        res.render('./web/login.html',{login_tip:''});
    });

    router.get('/index',function(req,res){
        res.send("i am web index page").end();
    });

    var db = mysql.createPool({
        host:'localhost',
        user:'root',
        password:'root',
        database:'nodejs'
    });

    router.post('/loginauth',function(req,res){
        var newPwd = md5(req.body.pwd);
        console.log(req.body.username,newPwd);
        // sql语句是用反引号括起来的
        db.query(`select * from n_user where USER_NAME='${req.body.username}' and USER_PWD='${newPwd}';`,(err,data)=>{
            if (err) {
                // 报错
                res.send(err).end();
            }else{
                console.log(data.length);
                // 判断是否有查询结果
                if (data.length==0) {
                    res.render('./web/login.html',{login_tip:'用户名或密码错误'});
                }else{
                    res.redirect('/web/index');
                }
            }
        });
    });

    return router;
}

4、这里需要注意的就是我们使用了res.redirect方法进行重定向,这里面的查询数据库的结果,可以用data.length判断是否有结果。我们这里还使用么md5模块,这个官方的貌似是采用了crypto,但是我们这边直接用md5更简洁。

5、这里面还可以利用上cookie-session进行判断是否已经登录。这里就不写进去了。源代码如下:Node.js简单登录案例

猜你喜欢

转载自blog.csdn.net/wsb200514/article/details/76890398