2015-05-31 21 views
5

Sto avendo alcuni problemi ottenere connect-flash per lavorare, il messaggio di errore che sto ricevendo è:espresso: req.flash() richiede sessioni

'Errore: req.flash() richiede sessioni'

Ho visto che questo può essere causa dell'ordine della app, ma non sono sicuro se questo è il caso qui.

App.js:

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var session = require('express-session'); 
var flash = require('connect-flash'); 
var passport = require('passport'); 
var app = express(); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use(session({secret: '{secret}', name: 'session_id', saveUninitialized: true, resave: true})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 

Itinerari ecc sono al di sotto

Flash codice di generazione:

passport.authenticate('local', { failureRedirect: '/login', successRedirect: '/', failureFlash: true}) 
+0

quindi, rimuovendo il rendimento del prefisso seguente la domanda qui su SO: http://stackoverflow.com/questions/19168355/req-flash-requires-sessions –

+0

Ho già letto che, non uso la sessione. destroy() ovunque. Altre idee? –

+0

[Il passaporto richiede che il flash sia configurato * prima * stesso] (http://stackoverflow.com/questions/19984996/setting-up-connect-flash-middleware-for-use-by-passport). Prova a inserire 'app.use (flash())' prima del passaporto – laggingreflex

risposta

3

Il problema era con come mio punto di vista si stava resa (usando req.flash dati)

Modifica:

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

A tal:

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

Corretto l'errore e cause collegarsi-flash di agire come previsto.

4

Il server redis è in esecuzione? Prova

redis-server 

Questo ha risolto il problema per me.