我正在尝试建立一个网站,如下所示: - 有一个登录页面,我使用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.这是进行登录过程的正确方法吗?
答案 0 :(得分:0)
理论上,如果您有一个名为' userPage.html'在您的应用程序的根目录中,您的mongo操作成功,您将其视为将它返回到您的ajax调用的内容,并且它的标记应作为文本插入元素中。尝试进行一些调试,看看代码获取的距离,如果您需要进一步的帮助,服务器是否会抛出任何错误,请告诉我们。
但是,这绝对不是您应该如何进行身份验证。首先,您应该避免自己设置登录和注册算法。有太多事情需要考虑。其中一些你已经错过了 - 你将密码存储为纯文本,这是一个很大的问题。我使用" passportjs"网上有很多很好的教程。像这样:https://scotch.io/tutorials/easy-node-authentication-setup-and-local你可以在那里快速学习如何在你的应用中使用它,
至于前端,如果你打算进行异步调用 - 意思是不要去另一个页面,你不应该真的发回一个页面而是一个确认。如果您想在登录后重定向到某个页面,只需要一个包含上述教程的帖子操作的表单。