淘先锋技术网

首页 1 2 3 4 5 6 7

node.js博客项目day01-博客管理登录

登录页

//渲染登录页模板
module.exports = (req, res) => {
    res.render('admin/login', {})
}

登录页提交表单

配置body-parser要在配置路由之前,否则会报req.body undefined的错

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
    extended: false
}));

提交前验证输入的邮件地址和密码是否为空

$('#loginForm').on('submit',function(){
    var result=serializeToJson($(this));
    console.log(result);
    if(result.email.trim().length==0){
        alert('请输入邮件地址');
        return false;
    }
    if(result.password.trim().length==0){
        alert('请输入密码');
        return false;
    }
})

其中,serializeToJson方法作为解析表单的公共方法抽取出来

function serializeToJson(form) {
    var result = {};
    form.serializeArray().forEach(item => {
        result[item.name] = item.value;
    })
    return result;
}

登录页提交表单验证如下

module.exports = async(req, res) => {
    let {
        email,
        password
    } = req.body;
    //服务端再次验证
    if (email.trim().length == 0 || password.trim().length == 0) {
        return res.status(400).render('admin/error', {
            msg: '邮件地址或者密码错误'
        })
    }

    const user = await User.findOne({
        email: email
    });
	//邮箱地址存在
    if (user) {
    //比对密码
        if (password == user.password) {
            res.redirect('/admin/user');
        } else {
            res.status(400).render('admin/error', {
                msg: '邮件地址或者密码错误'
            })
        }
    } else {
        res.status(400).render('admin/error', {
            msg: '邮件地址或者密码错误'
        })
    }

}