节点表达式的全局变量



我正在使用 Node Express 和 EJS。我有一个登录模块,可以执行所有用户会话相关的工作(例如登录生成令牌,验证令牌(。所以在应用程序中.js在向特定模块发送请求之前,我调用 login->controller->verifyToken

// app.js
const user = require('./controllers/login');
app.use('/dashboard', user.verifyToken,  dashboard);
app.use('/network', user.verifyToken, network);

user.verifyToken - 从请求标头验证令牌,并给我用户详细信息,如姓名、个人资料图片等。我想将这些用户详细信息存储在全局变量中,以便我可以在所有页面中访问它。所以我这样做了。

userHeader = authData.user; // without var, let

但是有了这个,我可以在视图文件(.ejs(上访问变量。但是我无法在其他模块.JS文件中访问此变量。我认为这背后的原因是所有视图文件都是在之后执行的,而.js文件是在"需要"时执行的。

处理此问题的最佳方法是什么?

这就是我为克服我的问题所做的。我同时使用了会话和变量

userHeader = authData.user;
res.cookie('userHeader', userHeader, {
    maxAge: 3 * 60 * 60 * 1000, // 3 hours
});

我直接在 ejs 文件和其他节点模块文件上使用 userHeader 变量,我首先从响应 cookie 中获取 userHeader 变量,然后使用它。

最新更新