0

我有 app.js

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

我如何从 functions.js 的角度访问会话信息?

4

2 回答 2

0

app.js 和 index.js 正在创建两个不同的应用程序,两个不同的 express 实例 - 两个不同的服务器。

由于您不需要另一个(索引不需要应用程序,应用程序不需要索引),因此当您运行一个时,只有那个正在运行。如果你node app只运行 app.js 运行,如果你node index只运行 index.js 运行。

您可能应该查看 express 的 github 存储库中包含的基本 express 应用程序示例:

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

于 2013-03-12T02:39:34.923 回答
0

问题出在这一行

isAdmin: function (res,req,next) {

出于某种原因,我用req切换了res。和

isAdmin: function (req,res,next) {

现在我可以获取会话信息。

于 2013-03-12T20:29:20.007 回答