我使用[email protected]和[email protected]並使用本地策略進行身份驗證。express 3.0和護照認證
一切似乎很好地工作,並重定向的成功與失敗正確
app.post('/login', passport.authenticate('local', { failureRedirect: '/' }),
function(req, res) {
console.log(req.isAuthenticated()); // true
res.redirect('/users/' + req.user.id);
});
但是,如果我在個人路由添加ensureAuthenticated
app.get('/users/:id', ensureAuthenticated, routes.user);
function ensureAuthenticated(req, res, next) {
console.log(req.isAuthenticated()); // false
if (req.isAuthenticated()) { return next(); }
res.redirect('/');
}
它重定向我回「/」(這是登錄頁面)而不是'/ users/id'(用戶配置文件)。問題是req.isAuthenticated()總是返回false,並且在調試中沒有req.user變量。
快遞3和護照互動有問題還是我做錯了什麼?
這是使用它的sipmlest方式,它改變不了什麼。如果req.isAuthenticated()爲false,我仍然在'/'路徑上添加ensureAuthenticated(如果req.isAuthenticated()爲false,則重定向到'/ login'),但由於req.isAuthenticated()始終爲false,所以出現錯誤路由。 – Yuri 2012-07-13 16:31:48
哦,不!實際上現在是這樣,但我仍然在錯誤的重定向 app.get('/ profile',ensureAuthenticated,routes.profile); – Yuri 2012-07-13 16:38:18
是的,不要把ensureAuthenticated放在/ login路徑中。並在您的ensureAuthenticated函數重定向到/登錄。 – jabbermonkey 2012-07-13 16:40:32