express框架的注册登陆

前端:html语言
后端:nodejs–express框架
数据库:mongodb
–只限于在本地数据库使用–
第一步–在用下面代码之前,请配置好相关环境这里写图片描述

关于代码中所用到的Mongodb操作的模块,请移步到本人另一篇博客. 【自己封装的mongodb操作的模块】
第二步–在nodejs目录创建一个*.js文件
代码如下:

var express = require("express");       //引入express模块,使用express框架,处理http请求
var app = express();                    //创建实例对象,才能调用框架的方法

app.use(express.static('public'));      //调用public文件夹(一般public文件夹存放一些img,css,js等前端所需的代码文件)

app.set("views engine", 'ejs');         //前端文件渲染
app.set('views', __dirname + '/views'); //设置前端文件地址:是在当前文件的views目录下

var crypto = require('crypto');         //引入crypto模块,主要是对用户的密码进行加密处理

var bodyParser = require('body-parser');    //中间件,用于解析post发送的数据
var urlencodedParser = bodyParser.urlencoded({extended: false})             //解析form表单发送过来的urlencoded

var mongodbModel = require('./mongodbModel'); //调用封装好的Mongodb数据库模块
var mongodb = new mongodbModel('user','userInfo'); //设置database以及数据表
mongodb.init();                         //进行连接和初始化

var session = require('express-session');   //引入session模块
var cookieParser = require('cookie-parser');//引入cookie模块
app.use(cookieParser());                    
    app.use(session({                      //设置session
        secret: '12345',                   //设置秘钥
        name: 'String_req.body.name',   //这里的name值得是cookie的name,默认cookie的name是:connect.sid(限本地数据库使用)
        cookie: {maxAge: 80000 },     //设置maxAge是80000ms,即80s后session和相应的cookie失效过期
    }));

//个人建议理解为定义方法,当网址为localhost:8000时,调用这个方法,实现的是返回views下的index2文件,是首页
app.get("/", function(req, res) {       
    res.render('index2', {'message':'首页'});
});

//当网址为localhost:8000/register2时,调用这个方法,实现的是返回views下的register2文件,是注册页面
app.get('/register2',function(req,res){
    res.render('register2',{'message':'注册'})
})
//当网址为localhost:8000/login2时,调用这个方法,实现的是返回views下的login2文件,是登陆页面
app.get('/login2',function(req,res){
    res.render('login2',{'message':'登陆'})
})
//点击注册,网址变为localhost:8000/login2,将注册信息发送并使用了下面这个方法。
app.post('/login2',urlencodedParser,function(req,res){
    var passwd =req.body.passwd;                //定义passwd变量的值为输入框name=passwd的值
    var md5 = crypto.createHash('md5');              //使用crypto的方法对密码进行加密
    var en_data = md5.update(passwd).digest('hex'); //定义en_data变量的值为加密后的值
    //使用封装的模块的insert方法,对用户的注册信息进行存储到数据库
    mongodb.insert({'name':req.body.name,'passwd':en_data},function(err,data){
        if(err){
            console.log('[INSERT ERROR] - ',err.message);
            res.render('register2',{'message':'注册'}) //如果注册失败,跳转到views下的register2页面;
       }else{
            res.render('login2',{'message':'登陆'})   //如果注册成功,跳转到views下的login2登陆界面
        }   
    });
})
//这里是登陆成功才能显示的界面,是笔者为了验证session是否有效才写的
//网址为localhost:8888/pay时,如果有req.session.sign,则成功进入views下的pay界面,如果并没有登陆过,则没有req.session.sign的值,那么跳转到登陆页面
app.get('/pay',function(req,res){
    if(req.session.sign){
        console.log(req.session);
        res.render('pay',{'message':'pay'});
    }else {
       res.render('login2',{'message':'登录'});
    }
})

//这是登陆成功才会进行的方法
//点击登陆,网址变为localhost:8888/index2,并且判断,如果输入的账号和密码不匹配,则跳转到登陆界面,如果匹配,则判断是否有session信息,没有的话,表明第一次登陆,则成功跳转并进行session值的存储,如果有session值,则再次更新session,并进行跳转
app.post('/index2',urlencodedParser,function(req,res){
    var passwd =req.body.passwd;                     //同样对登陆页面的密码输入框进行加密
    var md5 = crypto.createHash('md5');
        var en_data = md5.update(passwd).digest('hex');
    mongodb.find({'name':req.body.name},function(err,data){  //封装模块的查询方法,查询到对应数据的信息
        if(err){
            console.log('[INSERT ERROR] - ',err.message);
            res.render('login2',{'message':'登陆'})
        }else{
//          console.log(data[0].passwd);
            if(data[0].passwd==en_data){         //判断数据库的密码信息是否和输入框的密码匹配
                if (req.session.sign) {          //判断是否有缓存;如果有,直接跳转
                     res.render('pay',{'message':'pay'}); 
                }else {
                    req.session.sign = true;     //如果没有,则保存一个缓存信息
                    req.session.name = req.body.name;
                    res.render('pay',{'message':'pay'});
               }
            }else{
                res.render('login2',{message:'密码或者账号错误'}) //如果密码错误,则返回login2登陆页面
            }
        }       
    });
})
var server = app.listen(8888); //请求网址的端口号

第三步–在同目录创建views文件夹,并且在文件夹中创建regisger2.html文件,写好代码后改后缀为.ejs,即register2.ejs和login2.html文件,写好代码后改后缀为.ejs,即login2.ejs
这里写图片描述
[图片看不清请Ctrl+滑轮缩放页面]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值