使用res.redirect时,快速会话未存储数据

时间:2020-10-24 11:35:07

标签: node.js express session

我正在使用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: '/', _expires: null, originalMaxAge: null, httpOnly: true }
}

有人可以帮助解释问题所在吗?以及如何解决?

0 个答案:

没有答案
相关问题