私は、passport@0.1.12 で express@3.0.0beta4 を使用し、認証にローカル戦略を使用しています。
すべてが正常に動作しているようで、成功と失敗を正しくリダイレクトします
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 変数がないことです。
Express 3 とパスポートのやり取りに問題があるのでしょうか、それとも私が何か間違ったことをしたのでしょうか?