2015-04-06 70 views
0

我的令牌在req.headers.authorization中可用。我想把它保存为一个全局变量,以便在另一个文件中,比如说一个model,我也可以在不明确地将它传递给我的模型的情况下访问它。在NodeJS/ExpressJS中访问控制器外的令牌

这可能吗?

+0

我想传递令牌到你的持久性代码,所以你可以手动旁边的主要原因之一 – Plato

回答

1

由于节点/ Express应用程序保留在内存中运行的进程(假设你使用它作为一个服务器),我会担心,如果你是存储授权给全球分配请求值可能会导致一些严重的安全问题信息。

var globalAuth; 

(function() { 
    [].slice.apply(arguments).forEach(function(reqAuth) { 
    globalAuth = reqAuth; 
    // Simulate async operation 
    setTimeout(function() { 
     console.log(reqAuth, globalAuth); 
    }, reqAuth); 
    }); 
})(100, 10, 50); 

// outputs 
// 10 50 
// 50 50 
// 100 50 
+0

那么我该怎么做第二个数据库调用的审计?我需要访问模型中的登录用户标识,作为应该自动发生的审计脚本的一部分。我不想手动传递变量。如果我使用app.set('user',user)'? – Kousha

+0

这是[middleware](http://expressjs.com/guide/using-middleware.html)的用途。你尝试过这种方法吗? ['app.set'(http://expressjs.com/api.html#app.set)基本上设置应用全局所以你会如上所述以相同的问题结束了。 –

+0

是的,我理解中间件的使用,但是这明确要求我包含它。我所拥有的是一个审计表,我已经在我的模型设置触发器,以便在变化(如'insert','update'或'delete'),它的一个副本被保存在审核表(此服务于不同目的是SQL审计)。这些变化表可以在任何时候任何途径发生,采用中间件,然后要求我这样做手工。 – Kousha

相关问题