2015-05-31 15 views
5

Mam pewne problemy coraz połączyć-flash do pracy, komunikat o błędzie Dostaję jest:ekspresowe: req.flash() wymaga sesje

„Błąd: req.flash() wymaga sesje”

Widziałem, że może to być spowodowane zamawianiem aplikacji, ale nie jestem pewien, czy tak jest w tym przypadku.

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()); 

Trasy itp są poniżej

Flash kodu generującego:

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

więc, po prostu usunięcie twojego prefiksu daje następujące pytanie tutaj na SO: http://stackoverflow.com/questions/19168355/req-flash-requires-sessions –

+0

Już to przeczytałem, nie używam sesji. niszczyć() w dowolnym miejscu. Jakieś inne pomysły? –

+0

[Wymagania dotyczące paszportu muszą zostać skonfigurowane * przed samym *] (http://stackoverflow.com/questions/19984996/setting-up-connect-flash-middleware-for-use-by-passport). Spróbuj wstawić 'app.use (flash()) przed paszportem – laggingreflex

Odpowiedz

3

Problem był z tego, jak mój widok był już renderowane (używając req.flash danych)

Zmiana:

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

do tego:

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

Naprawiono błąd i przyczyny połączyć błysk działać zgodnie z oczekiwaniami.

4

Czy Twój serwer redis działa? Wypróbuj

redis-server 

Rozwiązało to dla mnie problem.