2013-03-25 60 views
0

我正在使用passport-local-mongoose并尝试在存储库中使用login example设置一个简单的工作示例。但是我遇到了问题,并且收到一条错误消息,提示“错误:未能将用户序列化到会话中”。无法使用猫鼬工作获得简单的passportjs

我在gist中转载了这个问题。 (要运行要点,你将需要更换的user.js的文件MongoDB服务器IP和数据库名称,做一个POST到与usernamepassword值/寄存器端点。)

在这里面,你会看到endpoints'/ setval'和'/ getval',它们在会话中设置值并检索它,显示会话支持正在工作。端点'/ authtest'会提供未经授权的响应,即使在执行'/ login'POST后也是如此。端点'/ authdebug'给出了更多信息 - 上面提到的错误。

任何人对发生了什么有什么想法?我没有办法尝试。

回答

1

我认为passport.authenticate应该只用于实际用于认证用户的路由;在你的情况下,这将是/login路线。

对于您要确保用户之前已经验证,像/authtest,你需要一个中间件,如果用户通过验证后,检查路线:

function ensureAuthenticated(req, res, next) { 
    if (req.isAuthenticated()) { 
    return next(); 
    } 
    res.redirect('/login'); // or your login page 
} 
// and 
app.get('/authtest', ensureAuthenticated, function(req, res) { 
... 
}); 

对于中间件另一种方法是connect-ensure-login