使用node / ejs / express / mongodb进行用户登录验证

时间:2017-08-28 02:31:03

标签: javascript node.js mongodb express ejs

我正在尝试创建一个登录页面,该页面既验证用户名和密码,又如果用户名和密码正确则重定向到另一个页面。但是,错误登录凭据的错误消息不会呈现到登录页面,如果登录正确,页面不会更改(应重定向到' 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();
        });
    });
});

0 个答案:

没有答案