2013-03-11 41 views
0

我有app.js與訪問會話信息的NodeJS

var express = require('express') 
    , routes = require('./routes') 
    , MemoryStore = new express.session.MemoryStore 
    , app = express(); 

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser('restservice')); 
    app.use(express.session({store: MemoryStore, secret: '123456', key: 'sid', maxAge: 60000 })); 
    app.use(routes); 
    app.use(app.router); 
}); 

路由/ index.js

var express = require('express') 
    , tools = require('./../functions') 
    , app = module.exports = express(); 

app.get('/user/:id',tools.isAdmin,function(req,res){ 
    console.log('isadmin'); 
}); 

和function.js

module.exports = { 
    isAdmin: function (res,req,next) { 
    if (req.session.level >= 16) 
     next(); 
    else { 
     res.json({result:-1}); 
    } 
    } 
}; 

所以我的問題是當我訪問http://myadmin.com/user/3我得到一個錯誤req.session undefined

我該如何從函數.js視圖中獲取對會話信息的訪問權限?

+0

你已經創建了兩個獨立的應用程序。我很驚訝什麼都記錄了。 – 2013-03-12 02:11:16

回答

0

app.js和index.js創建兩個不同的應用程序,兩個不同的快速實例 - 兩個不同的服務器。

由於您不需要另一個(索引不需要應用程序,並且應用程序不需要索引),因此當您運行一個應用程序時,只有該應用程序正在運行。如果運行node app只運行app.js,並且運行node index,則只運行index.js。

你或許應該看看包含在快遞公司的github倉庫基本明確應用實例:

https://github.com/visionmedia/express/tree/master/examples/mvc

+0

從app.js或index.js中,我可以使用「節點應用程序」來初始化服務器來獲取req.session。我的問題是在功能模塊內。我如何訪問req.session對象。 – 2013-03-12 20:19:25

0

的問題是在這條線

isAdmin: function (res,req,next) { 

由於某種原因,我切換了資源與請求。用

isAdmin: function (req,res,next) { 

現在我可以得到會話信息。

+0

「出於某種原因,我將res換成了req。」 - 原因是你必須有一個請求,然後纔能有迴應。因此,參數排序遵循這種模式是有道理的。 – Valjas 2013-06-13 00:19:19