#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.