passport-local
を使用して、認証とパスワードのハッシングを小さなWebアプリケーションに焼き付けようとしています。私はそれが正しく設定されていると信じていますが、資格情報が110%であっても、失敗して再度ログインするように指示されています。Passport-localが正しい資格情報で決して認証されない
パスポートのドキュメントは、デバッグエラーが非常に軽く、この障害のリダイレクトの原因を誰かが共有できるか、デバッグを続行するソリューションを提供できますか?
パスポート構成
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(username, password, cb) {
UserSchema.findByUsername(username, function(err, user) {
if (err) { return cb(err); }
if (!user) { return cb(null, false); }
if (user.password != password) { return cb(null, false); }
return cb(null, user);
});
}));
ログインルート
router.post('/login',
passport.authenticate('local', {
failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
スキーマおよびfindByUsername機能
const UserSchema = mongoose.Schema ({
firstName: {
type: String,
index: true
},
lastName: {
type: String,
index: true
},
email: {
type: String,
index: true
},
password: {
type: String,
index: true
},
homeAirport: {
type: String,
index: true
}
})
UserSchema.plugin(passportLocalMongoose)
// Adding this function to find by username
exports.findByUsername = function(username, cb) {
process.nextTick(function() {
for (var i = 0, len = records.length; i < len; i++) {
var record = records[i];
if (record.username === username) {
return cb(null, record);
}
}
return cb(null, null);
});
}
// Export it to the app
module.exports = mongoose.model('user', UserSchema)
デバッグステップとして、リターンユーザオブジェクトを返す関数を返す関数をユーザー戻り関数に置き換えます。 – danh
また、私はちょっとしたことですが、私が試みた少しのプロジェクトでは、passportLocalMongooseを使ってユーザー名、パスワード、塩分などをhttps:// githubにあるメソッドと同様に追加しています。 com/saintedlama/passport-local-mongoose#api-documentation – danh