Passport.js отсутствуют учетные данные

#express #authentication #passport.js #express-session #passport-local

#экспресс #идентификация #passport.js #экспресс-сессия #паспорт-местный

Вопрос:

Я пытаюсь использовать passport.js для аутентификации. Мой веб-сайт будет закрытым, поэтому пользователю не нужно регистрироваться для входа, он перейдет на страницу входа, выберет свое имя из списка (с тегом HTML) и введет дату своего дня рождения в качестве пароля.

Когда я пытаюсь войти в систему с неправильным или хорошим паролем, я получаю сообщение об ошибке во флэш-сообщении : отсутствуют учетные данные. Я много искал, но все решения в Интернете не работают для меня…

Вот мой код :

passport-config.js

 let md5 = require('md5'); let LocalStrategy = require('passport-local').Strategy;  const peoples = ["User1", "User2", "User3", "User4"]; const passwords = {  "User1": md5("2004"),  "User2": md5("2001"),  "User3": md5("1971"),  "User4": md5("1969") } let user;  function initialize(passport) {  passport.use(new LocalStrategy({  usernameField: 'username',  passwordField: 'password'  },  function(username, password, done) {   user = peoples.find(people =gt; people === username);   if(user === undefined || user === null) {  return done(null, false, { message: "This user doesn't exist" });  }   if(md5(password) === passwords[username]) {  return done(null, user);  } else {  return done(null, false, { message: "Incorrect pasword" });  }  }  ));   passport.serializeUser((user, done) =gt; {  done(null, user.username); // see PS  });  passport.deserializeUser((user, done) =gt; {  done(null, peoples.find(people =gt; people === user));  }); }  module.exports = initialize;  

server.js

 let express = require("express"); let app = express(); let passport = require('passport'); let md5 = require('md5'); let session = require('express-session'); let flash = require('express-flash'); let initializePassport = require('./passport-config.js'); initializePassport(passport);  app.use(session({  secret: md5("test"),  resave: false,  saveUninitialized: true })); app.use(flash()); app.use(passport.initialize()); app.use(passport.session());  const peoples = ["User1", "User2", "User3", "User4"];  app.get("/login", (req, res) =gt; {  res.render("login.ejs", {  peoples: peoples  }); });  app.post("/login", passport.authenticate('local', {  successRedirect: "/",  failureRedirect: "/login",  failureFlash: true }));  

The website also always redirect me to /login, whatever my password is.

Can you help me please ? Thanks !

PS : Я также хотел бы знать, что такое параметр «пользователь» внутри функции passport.serializeUser. Я следил за множеством учебных пособий и документов, но не могу понять, что это такое. Я бы также добавил, что не могу утешить.внесите что-нибудь в журнал внутри функции, вставленной в экземпляр LocalStrategy.