Passport.jsを使用した認証設定が非常に簡単です。ユーザーが認証されると、私はそれらを/ workにリダイレクトします。Passport.js認証後にExpress.jsが正しくルーティングされない
app.post('/login',
passport.authenticate('local', {
successRedirect: '/work',
failureRedirect: '/login',
failureFlash: true
})
);
認証プロセス全体が正常に動作します。つまり、プログラムは間違ったユーザ/パスワードのコンボなどを拒否します。実際の問題は、私のプログラムが/ workにリダイレクトされるときです。
上記のように、successRedirectは/ workにリダイレクトする必要があります。私は、ユーザーがログインしている場合はそうのように、チェックするためのミドルウェアを持っている:
function loggedIn(req, res, next) {
console.log('call to login, ' + req.user);
if (req.user) {
console.log('calling next...');
next();
} else {
console.log('redirecting...');
res.redirect('/login');
}
}
をそして、私の/作業GET要求は次のようになります。
app.get('/work', loggedIn, function (req, res, next) {
console.log('call to go to work')
res.render("projects.html", {
projects: getProjects()
});
});
問題は、それはむしろ伐採後に/仕事にリダイレクトするよりもですブラウザは[オブジェクトオブジェクト]を表示します。 [オブジェクトオブジェクト]もコンソールに記録されます。それは/仕事にも到達しません。/work GETリクエストからloggedInを削除すると、ページが正しくレンダリングされ、ルーティングの問題であることがわかります。明白な何かを逃したことがありますか?あなたが与えることができる任意の助けのためにあまり前もってありがとう! :)に処理中にコンソールに記録
:
redirecting...
Authentication success!
[object Object]
シリアル化とデシリアライズ機能:
passport.serializeUser(function (user, cb) {
cb(null, user.Email);
});
passport.deserializeUser(function (email, cb) {
getInfo(email, function (user) {
cb(user);
});
});
私は、私のconsole.logsのいずれかで、[オブジェクトのオブジェクト]を印刷することはありませんのでご注意くださいこれは謎のようです。
'ので、URLは'/login'に滞在し、それだけを示して[オブジェクトオブジェクト] '?コンソールには何が印刷されますか? –
申し訳ありませんが、私は言い換えましょう - それは/ログインに正しくリダイレクトします。私は正しくログインしていますが、/ workにリダイレクトすると、[object object]というページが表示されます。このシナリオのコンソールは、[オブジェクトオブジェクト]もログに記録します。これは、コンソールログがないため、奇妙です(どちらもチェックしました)。 –
最後の段落[here](http://passportjs.org/docs/authenticate)の説明に従ってカスタムコールバックを試しましたか? – rkm