我正在尝试创建一个登录页面,该页面既验证用户名和密码,又如果用户名和密码正确则重定向到另一个页面。但是,错误登录凭据的错误消息不会呈现到登录页面,如果登录正确,页面不会更改(应重定向到' home')。 console.log消息确实显示服务器端代码,我确实记录了'项目'检查findOne是否找到了用户名(如果存在)(并且有效)。
这是我的HTML:
<table id='loginTable'>
<form action='/login' method='POST' id='loginForm'>
<tr><td>Username</td><td><input type='text' name='loginUname' id='loginUname'></td></tr>
<tr><td>Password</td><td><input type='password' name='loginPword' id='loginPword'></td></tr>
<tr><td></td><td><% if (lerr) { %>Incorrect username/password combo<% } %></td></tr>
<tr><td></td><td><input type='submit' id='loginSite' value='Login' onclick='loginUser();'></td></tr>
</form>
</table>
这是我的客户端代码:
function loginUser() {
var loginQuery = {
loginUname: document.getElementById('loginUname').value,
loginPword: document.getElementById('loginPword').value
};
var req = new XMLHttpRequest();
req.open("POST", '/login', true);
req.setRequestHeader('Content-Type', 'application/json');
req.send(JSON.stringify(loginQuery));
event.preventDefault();
}
这是我的服务器端节点代码:
var express = require('express');
var path = require('path');
var parser = require('body-parser');
var mongo = require('mongodb').MongoClient;
var app = express();
//... rest of code
app.get('/login', function(req, res) {
res.render('login', { lerr: false });
});
app.post('/login', function(req, res) {
mongo.connect(url, function(err, db) {
// Look for username
db.collection('users').findOne({
username: req.body.loginUname,
}, function(err, item) {
if (err) return res.send();
// If the username is not found or the login password doesn't match the user's password
if (!item) {
console.log("The username is not valid\n");
res.render('login', { lerr: true });
} else {
if (req.body.loginPword !== item.password) {
console.log("The password is not correct\n");
res.render('login', { lerr: true });
} else {
console.log("The entry is correct!\n");
res.redirect('/home');
}
}
db.close();
});
});
});