如何在成功登录时加载页面或显示错误消息?

时间:2017-02-13 20:28:38

标签: jquery node.js

我正在尝试建立一个网站,如下所示: - 有一个登录页面,我使用post命令将用户名和密码发送到服务器。 - 如果细节正常,服务器发送其他要加载的网页, - 否则将显示错误消息。

客户端(html& JQuery):

$(document).ready(function()
            {
                $("#loginButton").click(function()
                {       
                    var username = $("input#username").val();
                    var password = $("#password").val();                    
                    $.post( "/login", { userName: username, pass: password })
                      .done(function( data ) {
                         $("#loginResult").text(data);
                      });
                });
            });

服务器端(NodeJs):

app.post("/login", function(req, res) {

    var userName = req.body.userName;
    var pass = req.body.pass;

    if(req.body.userName && req.body.pass) 
    {
        db.collection("customers").findOne({first_name:userName}, function(err, doc) 
        {
          if(doc) {
            res.sendFile('userPage.html', {root: __dirname })
          }
          else {
            res.send('ERR')
          }
        });
    }  
    else
    {       
        res.send('ERR') 
    }

});

如果细节有误,我可以看到错误信息, 但是,如果细节正常,则不会加载新页面(userPage.html)。 1.为什么? 2.这是进行登录过程的正确方法吗?

1 个答案:

答案 0 :(得分:0)

理论上,如果您有一个名为' userPage.html'在您的应用程序的根目录中,您的mongo操作成功,您将其视为将它返回到您的ajax调用的内容,并且它的标记应作为文本插入元素中。尝试进行一些调试,看看代码获取的距离,如果您需要进一步的帮助,服务器是否会抛出任何错误,请告诉我们。

但是,这绝对不是您应该如何进行身份验证。首先,您应该避免自己设置登录和注册算法。有太多事情需要考虑。其中一些你已经错过了 - 你将密码存储为纯文本,这是一个很大的问题。我使用" passportjs"网上有很多很好的教程。像这样:https://scotch.io/tutorials/easy-node-authentication-setup-and-local你可以在那里快速学习如何在你的应用中使用它,

至于前端,如果你打算进行异步调用 - 意思是不要去另一个页面,你不应该真的发回一个页面而是一个确认。如果您想在登录后重定向到某个页面,只需要一个包含上述教程的帖子操作的表单。