描述:登录模块提供用户输入用户名以及密码,提交验证后跳转至首页。
/*跳转至用户登录页面*/
router.get('/login', function(req, res) {
//req.param('login_msg')==undefined,即打开用户登录页面
//直接打开页面是,msg置null
var msg = null;
if(req.param('login_msg') != undefined) {
msg = req.param('login_msg');
}
res.render('index', { title: '用户登录',
toUrl: '/login',
user: req.session.user,
msg: msg});
});
/*提交登录信息*/
router.post('/doLogin', function(req, res) {
//用户名是否为空
var username = Util.trim(req.body.username);
if(username == '') {
//用户名为空!
return res.redirect('/login?login_msg=0');
}
//用户口令
var password = req.body.password;
if(password != '') {
//生成口令的散列值
var md5 = crypto.createHash('md5');
password = md5.update(password).digest('base64');
}
//判断注册用户是否存在
User.isExist(username, function(err, user) {
if(err) {
console.log(err);
//注册过程中出错!
return res.redirect('/login?login_msg=error');
}
if(!user) {
//用户名不存在!
return res.redirect('/login?login_msg=1');
}
//比较口令是否一致
if(password != user.password) {
//用户口令不正确!
return res.redirect('/login?login_msg=2');
}
user.loginTime = Util.getToday('yyyy-MM-dd HH:mm:ss');
user.isOnLine = true;
var updateDOC = {
userName : user.userName,
loginTime: user.loginTime,
isOnLine: user.isOnLine
};
User.update(updateDOC, function(err) {
if(err) {
console.log("登录时产生异常:"+err);
}
});
req.session.user = user;
res.redirect('/');
});
});
以上仅作为备忘或分享,若有错误请大家指正或讨论!