パスポートを使用してログインしようとすると、ページがリダイレクトされないという問題が発生しています。認証が返されtrue
ます (正しいユーザー名、パスワード)。
それが私のvalidPassword
機能のどこかにあると確信していますが、正確にはわかりません。
ログインルート
app.get('/login', function (req, res) {
res.render('login', {});
});
ログイン投稿
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
ユーザープロトタイプ
User.prototype.validPassword = function(username, unhashedPassword) {
async.waterfall([
function (callback) {
User.find({ "username" : username }, function (err, data) {
if(err) return handleError(err);
callback(null, data);
});
},
function (data, callback) {
var isGood = passwordHash.verify(unhashedPassword, data[0].password);
callback(null, isGood);
}
], function (err, result) {
return result;
});
};
ローカル戦略
passport.use(new LocalStrategy(
function(username, password, done) {
var unhashedPassword = password;
var passedUsername = username;
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(passedUsername, unhashedPassword)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
コンソールに出力されるエラーはないので、今は少し困惑しています。isGood
おそらく間違った形式で返されていますか?どんな助けでも素晴らしいでしょう。