我在使用passport.js进行身份验证时遇到了一些麻烦。我可以进入我的应用程序,但是只有第二次尝试登录。第一次尝试登录时,它将再次将我重定向到登录页面,这是我的失败重定向。但是,就像我说的那样,如果我使用相同的凭据再次尝试,一切都会很好...我不知道自己在做什么错。
有人可以帮忙吗?
我的路线:
const router = express.Router();
const { renderSignIn, signIn, logout } = require('../controllers/auth.controller')
// SINGIN
router.get('/signin', renderSignIn);
router.post('/signin', signIn);
//LOGOUT
router.get('/logout', logout);
module.exports = router;
我的控制器:
const authCtrl = {};
const passport = require('passport');
authCtrl.renderSignIn = (req, res, next) => {
res.render('auth/signin');
};
authCtrl.signIn = passport.authenticate('local.signin', {
successRedirect: '/profile',
failureRedirect: '/signin',
failureFlash: true
});
authCtrl.logout = (req, res, next) => {
req.logOut();
res.redirect('/');
};
module.exports = authCtrl;
我的password.js文件:
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
const pool = require("../database");
const helpers = require("./helpers");
passport.use(
"local.signin",
new LocalStrategy(
{
usernameField: "username",
passwordField: "password",
passReqToCallback: true
},
async (req, username, password, done) => {
const rows = await pool.query("SELECT * FROM projeto.logins_autorizados WHERE username = ?", [
username
]);
if (rows.length > 0) {
const user = rows[0];
const validPassword = await helpers.matchPassword(
password,
user.password
);
if (password == user.password) {
done(null, user, req.flash("success", "Welcome " + user.username));
} else {
done(null, false, req.flash("message", "Incorrect Password"));
}
} else {
return done(
null,
false,
req.flash("message", "The Username does not exists.")
);
}
}
)
);
passport.serializeUser((user, done) => {
console.log("VOU SERIALIZAR O USER " + user.username)
done(null, user.idlogins_autorizados);
});
passport.deserializeUser(async (id, done) => {
console.log("VOU DESERIALIZAR O USER " + id)
const rows = await pool.query("SELECT * FROM projeto.logins_autorizados WHERE idlogins_autorizados = ?", [id]);
done(null, rows[0]);
});
第一次输出:
POST /signin 302 17.425 ms - 60
GET /profile 302 1.734 ms - 58
VOU DESERIALIZAR O USER 8
GET /signin 200 14.297 ms - 3352
VOU DESERIALIZAR O USER 8
GET /css/styles.css 304 10.295 ms - -
第二次输出:
POST /signin 302 10.948 ms - 60
GET /profile 200 17.754 ms - 5064
VOU DESERIALIZAR O USER 8
GET /css/styles.css 304 17.383 ms - -