【发布时间】:2016-05-06 10:21:16
【问题描述】:
我目前正在使用 Node & Express 来构建我的应用程序
我的认证功能如下:
exports.isAuthenticatedLocal = function(req, res, callback) {
// console.log(req.headers);
if (req.isAuthenticated()) {
callback(null, true);
} else {
res.redirect('/login');
}
};
这是在我的用户路由器中调用的:
router.get('/profile', authController.isAuthenticatedLocal, function(req, res) {
res.render('profile', { user : req.user });
});
这样所有的功能都适用于从浏览器呈现的个人资料页面。但是,如果用户已登录并向localhost/profile 发送GET 请求,则会将整个页面连同所有用户详细信息一起发回。
问题是我正在使用connect-mongo 进行持久的护照连接。
var MongoStore = require('connect-mongo')(session);
...
var sessionStore = new MongoStore({ mongooseConnection: db.connection });
app.use(session({
key: 'connect.sid',
secret: 'secret',
store: sessionStore,
resave: true,
saveUninitialized: true
}));
使用简单会话不会触发来自非浏览器 GET 请求的 req.isAuthenticated(),而是呈现我重定向到的登录页面(这很好)。
app.use(session({
key: 'connect.sid',
secret: 'secret',
resave: true,
saveUninitialized: true
}));
那么,我怎样才能保持与 connect-mongo 的持久连接,并防止用户通过身份验证的所有页面被呈现?我应该寻找一个特定的标题吗?
提前致谢。
【问题讨论】:
标签: node.js mongodb express connect-mongo