繁体   English   中英

是在node.js服务器范围内的全局变量,还是仅针对该会话或用户的全局变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM