node.js - 从 MySQL 数据库进行身份验证后,如何在 app.post 中重定向用户?
问题描述
我正在创建一个网站,它有一个简单的用户界面,带有 NodeJs 和 MySQL 数据库的用户登录/注册系统。我的身份验证部分正在工作,但是在验证详细信息后重定向用户时遇到了麻烦。该表单使用 POST 方法,并且在 NodeJs 文件中正在对“app.post”中的用户进行身份验证。
我尝试使用“res.send”、“res.redirect”、“res.sendfie”重定向用户,但都失败了。收到错误消息:“错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头”。
登录表单
<FORM autocomplete="on" action="http://localhost:8888/user" method="POST">
<INPUT type="text" name="username" placeholder="Name">
<INPUT type="password" name="pass" placeholder="Password">
<BUTTON class="button">Login</BUTTON>
</FORM>
Node.js 文件
var express = require('express');
var bodyParser= require('body-parser');
var app = express();
var mysql=require('mysql');
var con=mysql.createConnection({
host: "localhost",
user:"root",
password:"",
database: "mydb"
});
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
con.connect(function(err){
if(err) throw err;
console.log("connected");
});
function redirect(){
res.send(__dirname + '/index.html');
}
app.get('/login.html',function(req,res){res.sendFile(__dirname+ "/" + "login.html");});
app.post('/user',function(req,res){
var uname=req.body.username;
var pass=req.body.pass;
var sql="Select * from user where username = '"+uname+"' and pass='"+pass+"'";
con.query(sql,function(err,result,fields){
console.log(sql);
console.log(result);
if(err)
throw err;
else{
if(result.length==1){
console.log("you have successfully logged in");
res.redirect("/dashboard.html");
}
else
console.log("Sorry ! login failed");
}
});
res.end();
});
con.end();
var server= app.listen(8888,function(){
var host=server.address().address;
var port=server.address().port;
console.log("Example app listening at http://%s%s",host,port);
});
我希望在数据通过身份验证后,如果详细信息正确,用户应该被重定向到“dashboard.html”,否则它应该重定向到“error.html”。
解决方案
添加中间件
app.use(express.static(__dirname + "/public/dashboard.html"));
在'/用户'
if(result.length==1){
console.log("you have successfully logged in");
res.redirect("/dashboard");
}
else
console.log("Sorry ! login failed");
}
推荐阅读
- xamarin.forms - xamarin ios:下一个在 IOS 的签名和分发过程中呈灰色显示
- r - 基于计数的过滤因子变量
- c# - 记录登录日期/时间
- docker - Gitlab CI Runner:致命:找不到命令 sh
- html - Move the line down
- puppeteer - Puppeteer can't catch failing request & errors
- kubernetes - kubectl x509: certificate signed by unknown authority
- c# - 如何在 ASP.NET Core 2 MVC 中使用依赖注入设置单元可测试模型验证?
- javascript - 如何将边距值存储在变量中?
- c# - 如何使用 OpenXml.Wordprocessing 和 C# 在 MS Word 中创建自定义样式链接(段落和字符)