【发布时间】:2019-01-31 17:46:50
【问题描述】:
所以我是 express(和整个后端)的新手,公平地说,我不知道如何使用 sessions(我首先使用 cookie,但后来我听说 sessions 是更好地维护用户的状态)所以我安装了express-session 并且确实像这篇文章一样:
https://stackoverflow.com/a/37608202/5737650
我将会话保存在变量中(sess),然后我用来获取信息,但问题是 sess 似乎只是 cookie 对象,而不是我需要保存的其他信息用户的输入给了我这个错误:
Cannot set property "name" of undefined
这是我的代码,它的工作是注册用户,将数据保存到数据库,然后当它进入登录页面时,它会检查他的输入是否存在于数据库中,如果不存在,那么它会给我一个 @ 987654329@,如果存在,那么它会将数据保存到会话中,以便我以后可以保持其状态,但是当我输入正确的输入时,它会给我上述错误:
// 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");
}
);
});
我如何解决这个问题并获得我想要的结果(保持其状态记录在整个网站上)?
【问题讨论】:
标签: node.js express session cookies express-session