Я создаю веб-сайт с простым пользовательским интерфейсом с системой входа / регистрации пользователя с NodeJs и базой данных MySQL.Моя часть аутентификации работает, но я столкнулся с проблемой перенаправления пользователя после того, как детали были проверены.Форма использует метод POST, и в файле NodeJs я аутентифицирую пользователя в "app.post".
Я попытался перенаправить пользователя, используя "res.send", "res.redirect", "res.сендфи "и все провалились.Получаю сообщение об ошибке: «Ошибка [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>
Файл NodeJs
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».