登录用户,如果用户名和密码与数据库匹配,则将其发送到个人资料页面,否则,console.log(“ error”)

时间:2019-04-08 14:27:42

标签: javascript mysql node.js express body-parser

需要执行此作业,即用户输入用户名和密码,如果与数据库匹配,则会将用户发送到配置文件页面,其中显示“你好<%= user.username%>,看来无法正常工作” ,它始终停留在同一页面上,但是从数据库中获取用户信息。

早期的版本可以正常工作,并将用户发送到个人资料页面,但是即使输入错误,它仍然会将其发送给他,因此很明显我尝试阻止这种情况。

const express = require('express');
const bodyParser = require("body-parser");
const app = express();
const connection = require("./connect");

// parse application/x-www-form-urlencoded
var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.set("view engine", "ejs");


// DB
connection.connect((err) => {
    if (err) throw err;
    else console.log("Database connected!");
});

app.get("/", (req, res) => {
    res.render("login");

});

app.get("/profile", (req, res) => {
    console.log(user);
    res.render("profile", { user })
})

app.post("/", urlencodedParser, async (req, res) => {
    user = await queryFunction("select * from users where users.username = " + connection.escape(req.body.username) +
        " and users.password = " + connection.escape(req.body.password));
    console.log(user)
    if (req.body.username === user.username && req.body.password === user.password) return res.redirect("/profile") 
    else console.log("Something went wrong!")
});


async function queryFunction(queryString) {
    let results = await new Promise((resolve, reject) => connection.query(queryString, (err, results) => {
        if (err) {
            reject(err);
        }
        else {
            resolve(results);
        }

    }))
    return results;
};

1 个答案:

答案 0 :(得分:0)

您可以使用express-session包来跟踪用户会话。本示例默认使用MemoryStore

注意:

  

默认的服务器端会话存储MemoryStore不是专门为生产环境设计的。在大多数情况下,它将泄漏内存,不会扩展到单个进程,而是用于调试和开发。

您可以使用db存储会话。根据{{​​1}}类型,有各种可用的连接器。有关会话和数据库连接器cte

的更多信息
db

在其他地方,例如,

var session = require('express-session')

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

app.post("/", urlencodedParser, async (req, res) => {
  ...
  if (req.body.username === user.username && req.body.password === user.password) {
    // you can then set some variable to session to track login status
    res.session.loggedin = true
    return res.redirect("/profile")
  }
  else console.log("Something went wrong!")
});