首页 > 解决方案 > 从 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”。

标签: node.jsexpress

解决方案


添加中间件

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");
        }

推荐阅读