Так что я новичок в express
(и бэкэнде в целом) и, если честно, я не знаю точно, как использовать sessions
(я сначала начал с использования куки, но потом я услышал, что sessions
лучше поддерживать состояние пользователя) поэтому я установил express-session
и сделал, как этот пост сделал:
https://stackoverflow.com/a/37608202/5737650
Где я сохранил сессию в переменной (sess
), а затем использовал для получения информации, но проблема в том, что кажется, что sess - это только объект cookie
, а не другая информация, которую мне нужно сохранить пользовательские входы, в которых выдал мне эту ошибку:
Cannot set property "name" of undefined
Это мой код, задача которого состоит в том, чтобы зарегистрировать пользователя, сохранить данные в базе данных, а затем, когда он переходит на страницу входа, он проверяет, есть ли его входные данные в базе данных или нет, если нет, то он даст мне console.log
, если существует, то он сохранит данные в сеансе, чтобы я мог поддерживать его состояние позже, но выдает мне вышеуказанную ошибку при вводе правильных входных данных:
// Importing modules/packages
let connection = require("./Connection.js");
let bodyParser = require("body-parser");
var cookieParser = require("cookie-parser");
let express = require("express");
let app = express();
var session = require("express-session");
app.use(cookieParser());
app.use(
session({
secret: "1E3ESS3DSS4DS4",
saveUninitialized: true,
resave: false,
cookie: {
path: "/",
maxAge: 1000 * 60 * 60,
httpOnly: true
},
user: {
name: "",
password: "",
status: ""
}
})
);
let urlencodedParser = bodyParser.urlencoded({ extended: false });
// Server and routing
app.listen(3000, function() {});
app.set("view engine", "ejs");
app.get("/Signup", (req, res) => {
res.render("Register");
});
app.get("/", function(req, res) {
res.redirect("Login");
});
app.get("/Login", function(req, res) {
res.render("Login");
});
// Database's Connection
connection.connect(err => {
if (err) {
throw "ERROR! " + err;
}
});
// Requesting and Receiving Data from body parser
app.post("/Signup", urlencodedParser, function(req, res) {
res.render("Register");
connection.query(
`insert into users (Username, User_Password, Email_Address) values ("${
req.body.Username
}", ${req.body.Password}, "${req.body.Email}")`,
function(err) {
if (err) throw "An error has happened while excuting the query " + err;
console.log("Query got excuted successfully!");
}
);
});
app.post("/Login", urlencodedParser, (req, res) => {
let sess = req.session;
console.log(sess);
connection.query(
`SELECT Username FROM users WHERE User_Password = ? AND Username = ?`,
[req.body.Password, req.body.Username],
function(err, results) {
if (results.length === 0) {
console.log(
"Sorry, this username/password doesn't exist in our database."
);
} else {
console.log("Logined successfully!");
sess.user.name = req.body.Username;
sess.user.password = req.body.Password;
sess.user.status = "online";
}
res.render("Login");
}
);
});
Как я могу это исправить и получить желаемый результат (сохранить его состояние, зарегистрированное на всем сайте)?