2017-10-19 57 views
1

我試圖在用戶成功登錄到我的應用時通過連接閃光渲染閃光消息。使用連接閃光燈進行節點/快速應用時無法獲得閃光消息

我可以控制檯註銷Flash消息,但他們似乎沒有得到渲染客戶端。

但是,我知道一個事實,即沒有什麼錯在客戶端,因爲當我在我的路線有一個簡單的字符串像'You have successfully login!'更換req.flash[0]則消息確實出現。

護照配置:

// 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)); 
    } 
)); 

路線:

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

服務器:

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

回答

1

奇怪的問題,但反過來通過調用console.log(req.flash('success'),然後將其納入響應實際上使其失敗。一旦我刪除了控制檯日誌行,它開始工作。

不知道爲什麼這是 - 不知道爲什麼這是,如果任何人有任何想法很想知道。