无法将布尔变量值传递到另一个express文件中



我正试图在Node.js应用程序中将布尔值从一个文件传递到另一个文件。

auth.js

const express = require("express");
const router = express.Router();
var isLoggedIn = false;
router.get("/", (req, res) => {
res.render("pages/auth");
console.log(isLoggedIn);
});
router.post("/", (req, res) => {
if (req.body.password == "Secret") {
isLoggedIn = true;
res.redirect('/home');
} else {
res.send("<h1 align='center'>Wrong password</h1>");
}
console.log(isLoggedIn);
});
module.exports = {
auth: router,
isLoggedIn: isLoggedIn,
};

如果密码正确,则isLoggedIn的值应为true,但如果我将其导入另一个文件,则会变为false。我该如何解决这个问题?

我不介意安装另一个软件包。

您在服务器启动时创建并导出对象,而在服务器启动(即运行此处的顶级代码(时,分配给isLoggedIn的值为false

虽然您可以通过导出一个函数来修复它,该函数在被调用时返回变量的值:

module.exports = {
auth: router,
getIsLoggedIn: () => isLoggedIn,
};

一个更根本的问题是,对于所有用户,在服务器联机的生存期内设置变量。例如,如果用户A登录,那么从世界各地的其他浏览器访问网站的未注册用户B就不应该被视为登录。isLoggedIn变量应该被完全抛弃(除非你想要的逻辑是,一旦一个人登录,服务器就会看到所有打到你端点的人都登录了——这听起来很不寻常(。

使用会话变量,这样每个访问网站的人都有单独的可设置和可检索状态。

相关内容

  • 没有找到相关文章

最新更新