我正试图在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
变量应该被完全抛弃(除非你想要的逻辑是,一旦一个人登录,服务器就会看到所有打到你端点的人都登录了——这听起来很不寻常(。
使用会话变量,这样每个访问网站的人都有单独的可设置和可检索状态。