J'essaie de générer des messages flash via connect-flash lorsque les utilisateurs se connectent avec succès à mon application.Impossible d'obtenir le message flash à afficher lors de l'utilisation de connect-flash pour l'application Node/Express
Je peux console déconnecter les messages flash, mais ils ne semblent pas être rendu côté client.
Cependant, je sais pertinemment qu'il n'y a rien de mal dans le côté client parce que quand je remplacerai req.flash[0]
dans mon itinéraire avec une simple chaîne comme 'You have successfully login!'
le message ne apparaît.
config Passeport:
// Local login Strategy
passport.use('local-login', new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},
(req, email, password, done) => {
User.findOne({ 'local.email': email })
.then(user => {
if (!user) return done(null, false);
user.validPassword(password, (err, res) => {
if (err) return done(err);
if (!res) return done(null, false);
done(null, user, req.flash('success', 'Login Successful!'));
});
})
.catch(err => done(err));
}
));
Route:
app.post(
'/api/login',
passport.authenticate('local-login'),
(req, res) => {
console.log(req.flash('success'));
const user = {
user: req.user,
msg: req.flash('success')[0] // Works when I replace with 'You have successfully logged in'
};
res.send(user);
}
);
Serveur:
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
const keys = require('./config/keys');
require('./models/User');
require('./services/passport');
mongoose.connect(keys.mongoURI);
const app = express();
app.use(bodyParser.json());
app.use(cookieParser());
app.use(flash());
app.use(
cookieSession({
maxAge: 30 * 24 * 60 * 60 * 1000,
keys: [keys.cookieKey]
})
);
app.use(passport.initialize());
app.use(passport.session());
require('./routes/authRoutes')(app);
app.get('/', (req, res) => {
res.json({ message: 'hello' });
});
if (process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'));
const path = require('path');
app.get('/', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT,() => console.log('Working'));