是node.js服务器范围内的全局变量,还是只针对该会话或用户
Are global variables in node.js server wide or just for that session or user
我有一个非常基本的问题和道歉,如果它是愚蠢的-全局变量在node.js服务器范围内,还是它只是为会话或用户?例如,我正在考虑在routes.js文件下创建一个全局布尔变量来存储twitter凭据是否已经验证,如果已经验证,则不应该重新验证。
然而,我想知道变量是否会为每个会话/用户创建,还是会为整个服务器创建一次(即,如果一个人验证,将verifiedCredentials设置为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的核心中没有会话/用户上下文。
实际上node并不是一个真正的http服务器程序,它是一个基于事件的引擎,你可以在上面运行很多东西,它经常被用来运行基于http的应用程序(但它可以用于甚至没有会话或用户概念的应用程序)。
如果你确实需要将变量附加到会话,那么,当你使用express时,只需要求它管理会话并存储变量,如
req.session.verifiedCredentials = false;
请注意,如果您正在尝试管理身份验证,正如您的变量名所示,您可能对已经测试过的模块感兴趣,例如passport。
相关文章:
- 如何检测用户是否在同一会话中打开了多个窗口或选项卡
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- 如何获取登录到当前会话的用户的ID
- JavaScript 中的用户会话跟踪
- 允许同一用户在不同数量的设备上多次登录以及如何处理会话
- 在每个 AJAX 请求(Sencha Touch 2)中发送用户详细信息(会话令牌)
- 如何在没有JQuery的情况下,通过对服务器的基本ajax调用,根据浏览器上的用户活动保持服务器会话活动
- Zkoss:如何通知用户会话超时或与服务器的连接丢失
- 我该如何在允许用户导航到其他页面的同时,使用strophe保持聊天会话的打开
- 每个用户/浏览器会话只加载一次Javascript
- 用户使用会话变量登录
- 具有多个用户或会话的网页
- 当用户刷新页面时,如何在单独的服务器中处理socket.io上的会话
- 可以'在尝试使用chai请求代理为测试维护用户会话时,t在发送标头后设置标头出错
- 如何将用户会话保存在PHP中的一个变量中,以便在JavaScript中引用
- Passport本地策略未将用户保存在cookie或会话中
- 当用户移回登录页面时清除会话
- 当用户关闭选项卡或窗口时销毁会话
- 使用 http 删除终止用户会话
- 尝试让PHP会话用户进入JavaScript