[英]Are global variables in node.js server wide or just for that session or user
我有一个非常基本的问题,如果这很愚蠢,我会道歉-是在node.js服务器范围内的全局变量,还是仅针对该会话或用户? 例如,我正在考虑在routes.js文件下创建一个全局布尔变量,以存储twitter凭证是否已通过验证,如果已通过验证,则不应重新验证。
但是,我想知道该变量是为每个会话/用户创建还是为整个服务器创建一次(即,如果一个人验证(将verifyCredentials设置为true),该变量是否对所有其他用户都是true ?)。
routes.js (Server side):
'use strict';
var verifiedCredentials = false;
/**
* Application routes
*/
module.exports = function(app) {
// Server API Routes
app.get('/api/awesomeThings', function(req, res) {
if (!verifiedCredentials) {
//do some verification
verifiedCredentials = true;
}
});
}
测试起来并不难。
但是,您没有得到以下结果:全局变量实际上是全局变量,节点的核心中没有会话/用户上下文。
实际上,node并不是真正的http服务器程序,它是一个基于事件的引擎,您可以在该引擎上运行许多事情,并且碰巧经常用于运行基于http的应用程序(但是它甚至可以用于没有会话或用户的概念)。
如果确实需要在会话上附加变量,那么在使用express时,只需要求它管理会话并将变量存储为
req.session.verifiedCredentials = false;
请注意,如果您要尝试管理身份验证(如您的变量名所想),您可能会对已经通过测试的身份验证模块感兴趣,例如passport 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.