2013-03-11 98 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