2015-04-06 33 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