如何解决使用res.redirect时,快速会话未存储数据
我正在使用express-session模块在2条路由之间发送数据。
这是场景。 当用户在注册页面上创建帐户时,他将被重定向到首页,但我应该在首页上显示用户的“用户名”,表示“欢迎”。
为此,我使用了快速会话,但是由于某些原因,当我res.redirect('/)
时,会话数据没有存储。
这是我的server.js代码
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const session = require("express-session");
mongoose.connect(
"mongodb://localhost:27017/ONLINE_SHOPPING",{
useNewUrlParser: true,useUnifiedTopology: true,},err => {
if (!err) console.log("successfull");
else console.log("Failed");
}
);
//middle wares
app.use(express.static("public"));
app.use(
bodyParser.urlencoded({
extended: true,})
);
app.set("view engine","ejs");
app.use(
session({
secret: "some-random-secret-key",resave: false,saveUninitialized: false,})
);
require("./app/routes")(app);
app.listen(3000,() => console.log("app is running on port 3000"));
这是sign_up表单的发帖路线。
router.post("/sign_up",async (req,res) => {
const User = mongoose.model("user",userSchema);
req.body.homeAddress = "new nullakunta";
try {
const user = new User({
name: req.body.username.trim(),email: req.body.email.trim(),password: req.body.password.trim(),homeAddress: req.body.homeAddress,});
const result = await user.save();
if (result != null || result != undefined) {
req.session.username = result.username;
req.session.cookie.expires = false;
res.redirect("/");
return;
} else {
res.send("account not created");
return;
}
} catch (e) {
res.send("account not created");
return;
}
});
如果您在上面的代码中看到,我将像这样req.session.username = result.username;
来存储用户名。
router.get("/",(req,res) => {
if (req.session.username != null || req.session.username != undefined) {
console.log('user name is',req.username);
}
console.log(req.session);
res.render("catalog");
});
每次我运行服务器并签名时,控件都不会进入主路径('/')
中提到的if循环
以下语句console.log(req.session);
('/')
route的输出是
Session {
cookie: { path: '/',_expires: null,originalMaxAge: null,httpOnly: true }
}
Session {
cookie: { path: '/',httpOnly: true }
}
有人可以帮助解释问题所在吗?以及如何解决?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。