#javascript #reactjs #express #passport.js #connect-flash
#javascript #reactjs #экспресс #passport.js #подключение-flash
Вопрос:
[Обновление] Вопрос теперь содержит необходимые детали, из-за которых автору удалось найти решение, и, следовательно, его следует повторно открыть для ответов.
Вопрос в названии. Есть ли способ использовать connect-flash в серверной части (express), чтобы сообщения были доступны в интерфейсном приложении react?
Моя локальная стратегия passport, я использую базу данных sqlite:
passport.use(
new LocalStrategy({ usernameField: 'name' },
(name, password, done) => {
//Match user
db.get(`SELECT * FROM Users WHERE name = '${name}'`, (err, user) => {
if(err) throw err;
if(!user) {
return done(null, false, { msg : 'name not registered' });
}
//Match password
bcrypt.compare(password, user.password, (err, isMatch) => {
if(err) throw Error;
if(isMatch) {
done(null, user);
} else {
done(null, false, { msg : 'Password incorrect' })
}
});
})
})
);
и мой маршрут / login:
//Login Handle
usersRouter.post('/login', passport.authenticate('local'), (req, res ) => {
res.json('Successfully authenticated.')
}
);
Я читал, что я могу добавить параметры к этому маршруту в объекте, включая
{
failureFlash: true
}
но я просто не понимаю, как получить доступ к сообщениям (хранящимся в req.flash?) В моем интерфейсе react.
Комментарии:
1. да, есть. Не могли бы вы поделиться кодом, в котором вы определяете свою стратегию passport?
2. да, конечно! Я отредактировал вопрос, извините!
3. а также где вы используете функцию аутентификации паспортов?
4. также добавил его: D
5. passportjs.org/docs/downloads/html пожалуйста, прочтите раздел проверки обратного вызова из этой документации. Я бы с удовольствием помог вам с кодом, но я думаю, вы хотите понять, как работает эта чертова штука.