在不同的路线上保持会话

时间:2014-08-17 00:41:07

标签: node.js express passport.js

如何维持路线之间的会话。

我有3条路线

var routes = require('./routes/index');
var users = require('./routes/users');
var question = require('./routes/question');


app.use('/', routes);
app.use('/users', users);
app.use('/question',question);

在3 js文件的顶部是:

var express = require('express');
var router = express.Router();

这创建了一个新的路由器,因此我想失去会话?

在用户中,我使用passport来创建登录系统,通过默认的序列化程序,用户信息保存在req.user下,但只能在用户路径中访问。

我想在路线(索引)和问题路线中使用会话。我该如何解决这个问题?

感谢,

1 个答案:

答案 0 :(得分:1)

正如您所提到的,您已在其单独的文件中定义了每个请求特定的路由。 然后你不需要在主文件中再次定义这些行。

  

var express = require(' express');   var router = express.Router();

app.use(passport.session());
function ensureAuthenticated(req, res, next) {
// passport.js provides this method req.isAuthenticated()) 
if (req.isAuthenticated()) 
   return next();
else
// Return error content: res.jsonp(...) or redirect: res.redirect('/login')
}

在这里,您可以定义检查路线的策略。如果是认证,则披露用户相关信息。

app.use('/', ensureAuthenticated, routes);