この認証は正常に機能し、リダイレクトを取得します。
server.post(authPostRoute, passport.authenticate(
'local'
, { successRedirect: '/', failureRedirect: '/login' }
));
この認証は、コールバックが呼び出された後にハングします。
server.post(authPostRoute, passport.authenticate(
'local'
, function(){ console.log('Hitting the callback'); console.log(arguments)}
));
これにより、次の部分がログに記録されます。
{ '0': null,
'1':
{ id: [Getter/Setter],
firstName: [Getter/Setter],
lastName: [Getter/Setter],
email: [Getter/Setter],
addedOn: [Getter/Setter],
active: [Getter/Setter],
password: [Getter/Setter] },
'2': undefined }
しかし、ドキュメント全体( http://passportjs.org/guide/authenticate/ )は、reqとresが渡されるように見えますが、明らかにそうではありません。次に、コールバックを呼び出すコード:
node_modules\passport\lib\middleware\authenticate.js
strategy.success = function(user, info) {
if (callback) {
return callback(null, user, info);
}
それらのパラメータを渡しません。私は何が間違っているのですか?
OK、昨日9時間、カスタム認証を取り除いてパスポートに置き換える作業をしていました。 node-ormにリクエストの外部でモデルを公開させることと、注文のフローを処理することの間で、私は少し燃え尽きました。コード例は正確です。もっと注意深く読む必要があります。
// traditional route handler, passed req/res
server.post(authPostRoute, function(req, res, next) {
// generate the authenticate method and pass the req/res
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/'); }
// req / res held in closure
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.send(user);
});
})(req, res, next);
});
PassReqToCallbackを有効にして、コールバックでリクエストを取得します。このような:
passport.use(new FacebookStrategy({
clientID: '555555555555555',
clientSecret: '555555555555555555555',
callbackURL: "http://localhost:3000/auth/facebook/callback",
enableProof: false,
passReqToCallback: true
},
// The request will be provided as 1st param
function(req, accessToken, refreshToken, profile, done) {
});...