初めてpassportjsを使用してユーザーを認証しようとしていますが、動作させるのに問題がありました。だから、これは私がpassportjs authentication failed
Index.jsルートファイルで働いている、関連するコードがある
var express = require('express');
var router = express.Router();
var passport = require('passport');
var bcrypt = require('bcryptjs');
router.post('/', passport.authenticate('local', {
successRedirect: 'home',
failureRedirect: '/'
}));
「
// Authentication packages
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var MySQLStore = require('express-mysql-session')(session);
var bcrypt = require('bcryptjs');
passport.use(new LocalStrategy(function(email, password, done) {
console.log(email);
console.log(password);
res.locals.connection.query('SELECT id, password FROM users WHERE email = ?', [email], function(err, user) {
console.log(user);
if (err) {return done(err)};
if (user.length === 0) {
done(null, false);
};
const hash = user[0].password.toString();
console.log(hash);
bcrypt.compare(password, hash, function(err, res) {
if (res === true) {
return done(null, {user_id: user[0].id});
} else {
return done(null, false);
}
});
});
}
));
私は入力有効なEメールアドレスとパスワードは、私はドンapp.js私が望むように、家にリダイレクトされることはありません。代わりに私はログインページにリダイレクトされます。無効なメールアドレスを使用すると、同じことが起こります。また、ログインフォームを送信するときにログオンするようにしていても、電子メールとパスワードは表示されません。
誰でも私をここで助けてください。
あなたが実行しようとしているconsole.logが表示されない場合は、あなたがヒットしようとしている機能全体がisnヒットしました。つまり、毎回失敗し、ログイン画面が再び表示されます。なぜあなたのコードに当てはまらないのかを理解して、あなたが探している答えを見つけるでしょう。 – zerohero
ここでは、あなたが間違っている可能性がある場所を確認するための例を示します:https://github.com/passport/express- 4.x-local-example/blob/master/server.js – zerohero
これを指摘してくれてありがとう、残念なことに私は今この2日間稼働しており、それを把握することができませんでした。代わりにapp.jsからindex.jsに戦略を移行する必要がありますか? – Mena