Я настраиваю то, что, по моему мнению, было бы самым простым auth - сайт загружается на экран журнала, пользователь вводит учетные данные в форме, при отправке я использую Passport.JS и Sequelize для проверки учетных данных. Большинство из них копируется из различных учебных пособий или самого веб-сайта Passport. Независимо от того, что я делаю, измените или попробуйте, сайт просто зависает, как только я нажимаю кнопку отправки формы. На вкладке "Инструменты инструментов разработчика" я просто покажу, как отправить запрос /login в ожидании.
Чтобы устранить все возможные дополнительные проблемы, я удалил Sequelize и использовал пользователей с жесткой кодировкой, например, локальный пример использования на странице паспорт github. Тем не менее, никаких изменений в Sequelize не было проблемой.
Я уверен, что это что-то немое. Я пробовал очевидные решения, например, чтобы убедиться, что моя форма отправляет "имя пользователя" и "пароль".
Моя форма выглядит следующим образом:
form(method="post", action="/login")
fieldset
legend Please Log In
label(for="username") Username:
input#username(type='text', name="username", autocomplete="off")
label(for="password") Password:
input#password(type='password', name="password")
button#login(type="submit") Log In
В node my app.js использует маршрутизатор, который включает в себя следующее:
var login = require('../app/controllers/login');
app.get('/', login.index);
app.post('/login', login.auth);
Загрузка страницы выполняется в запросе get. На пост он направляет на это:
exports.auth = function (req, res, next) {
console.log(req.body);
passport.authenticate('local', {
successRedirect: '/home',
failureRedirect: '/',
failureFlash: true
});
};
Консоль .log(req.body) подходит отлично, показывая значения формы, поэтому мы в порядке с этой точкой. Но ничего не произошло. Это последняя часть:
passport.use(new LocalStrategy(
function(username, password, done) {
console.log('local strat invoked');
findByUsername(username, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
if (user.password != password) { return done(null, false, { message: 'Invalid password' }); }
return done(null, user);
});
}
));
Я поменял код, который использовал Sequelize, чтобы проверить БД для пользователя с помощью этой функции findByUsername (скопирован и вставлен прямо из вышеупомянутого сообщения на странице gigub паспорта), но в качестве console.log( "local strat invoked" ') никогда не подходит, я ничего не думаю о том, что после этого момента даже имеет значение.
Также включает в себя паспорт. СериализуетUser и passport.deserializeUser, но я не могу представить, что это проблема на этапе, где я застрял.
Любая идея, какой шаг мне не хватает, чтобы заставить это работать?