Bonjour à tous !

Voila je rencontre un petit problème avec mon code.
Je test actuellement le module passport sous nodejs. Grâce à celui-ci, je voudrais créer un espace de connexion pour les membres visitants mon site. Cependant, j'ai un petit soucis. En fait, lorsque je mets un mauvais mot de passe, la redirection se fait, mais le message flash n'apparaît pas et lorsque je mets le bon mot de passe... Bah rien ne se passe non plus.
Il n'y a aucun message d'erreur dans la console donc... Je sais que j'ai raté un truc, mais je ne trouve pas. Pas faute d'avoir googlé...

// Pour index.js
var express = require ('express');
var flash = require('connect-flash'); 
var app = express() 
var session= require('express-session');
var ejs = require ('ejs'); 
var passport = require('passport'), LocalStrategy = require('passport-local').Strategy; 

app.set('view engine', 'ejs');
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))
app.use(flash()); 

passport.use(new LocalStrategy({
    usernameField: 'email',
    passwordField: 'test'
  },
  function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));

app.get('/', function (req, res) {
  res.render('index', {message: req.flash()});
});

app.get('/user_access', function (req, res) {
  res.render('user_access', {message: req.flash('ok')});
});

app.get('/login', function (req, res) {
  res.render('login', { message: req.flash()});
});

app.post('/login',
  passport.authenticate('local', { successRedirect: '/user_access',
                                   failureRedirect: '/login',
                                   failureFlash: true })
);

app.listen(8080);
// Pour la page de connexion.
<form action="/login" method="post">
    <div>
        <label>Username:</label>
        <input type="text" name="username"/>
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password"/>
    </div>
    <div>
        <input type="submit" value="Log In"/>
    </div>
</form>

Merci de votre aide !

1 réponse


ben c'est normale, il faut que tu assigne a ton template la variable message que tu transmet via ton url flash