我有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);
});
routes / 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视图中获取对会话信息的访问权?
答案 0 :(得分:0)
app.js和index.js正在创建两个不同的应用程序,两个不同的express实例 - 两个不同的服务器。
由于您不需要另一个(索引不需要应用程序,而应用程序不需要索引),因此当您运行一个时,只有那个正在运行。如果运行node app
,则只运行app.js,如果运行node index
,则只运行index.js。
您应该查看express的github存储库中包含的基本快速应用示例:
https://github.com/visionmedia/express/tree/master/examples/mvc
答案 1 :(得分:0)
问题在于这一行
isAdmin: function (res,req,next) {
出于某种原因,我用req切换了res。随着
isAdmin: function (req,res,next) {
现在我可以获得会话信息。