ローカル戦略を使用して認証する問題が発生しています。無効な資格情報や何かが失敗した場合は、適切なエラーが表示されます。しかし、認証が成功すると404エラーが表示されます。NodeJS、Passport&Passport-Local
私は周囲を掘り下げました。私が遭遇した最善のアイデアは、セッション記憶域を落とすことでした(ユーザーをシリアライズしている間に起こっているようです)。誰でもこのような問題が発生しますか?
コードの一部ですが、コードの他のセクションが必要な場合は、私が喜んで提供することをお知らせください。
私のパスポート設定:
var passport = require('passport'),
User = require('mongoose').model('User');
module.exports = function() {
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findOne({ _id: id }, '-password -salt -__v', function (err, user) {
done(err, user);
});
});
require('./strategies/local')();
};
私の地元の戦略構成:
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
User = require('mongoose').model('User');
module.exports = function() {
passport.use(new LocalStrategy({
usernameField: 'email'
}, function (email, password, done) {
User.findOne({email: email}, function (err, user) {
if (err) {
return done(err);
}
if(!user || !user.active || !user.authenticate(password)) {
return done(null, false, { message: 'Authentication Failed'});
}
return done(null, user);
});
}));
};
他のすべてのメソッドが動作し、私は、ユーザーを見つけるためにDBを照会することができ、私はハッシュされたパスワードをマッチングを通じて強化しています提供されたパスワードで、すべてがうまくいくように見えて、LocalStrategyの最後にユーザーがいます(私は最終的にdone(null, user)
にします)serializeUser()
done(null, user.id)
何かが起きました。私が実際に何が起きているのかを知ることはできません。
それはpassport.authentic 'へのコールのように聞こえますate() 'が正しく設定されていない可能性があります。あなたはそれをどのように使っているのかを示すことができますか?私はそこに何か特別なことをやっていないよ – robertklep
: 'app.route( '/ログイン') \t \t .post(passport.authenticate( 'ローカル'));私は、任意のリダイレクトを行う必要はありません' 何か、私はちょうどそれがフロントエンドにユーザーオブジェクトを返す必要があります。 最近、ノード暗号 'pbkdf2Sync'は、ダイジェストなしで呼び出すと非難されてしまったので、これを追加しました。 - それをテストしただけで、同じことが得られます... –