2017-10-15 60 views
0

我想實施護照本地策略使用passport.js如何獲得failureFlash在Passport.js本地策略中顯示Flash消息?

我希望它,以便當用戶嘗試註冊已經採取的電子郵件,它閃爍的消息'該電子郵件是已經拿了'。

我已經添加了行failureFlash: true但我如何獲得訪問的Flash消息,所以我實際上可以讓它出現在屏幕上?

我對這一切都很陌生,所以任何幫助都會很棒。

passport.js:

const passport = require('passport'); 
const LocalStrategy = require('passport-local').Strategy; 
const mongoose = require('mongoose'); 
const User = mongoose.model('users'); 

passport.serializeUser((user, done) => { 
    console.log('serialize:', user.id); 
    done(null, user.id); 
}); 

passport.deserializeUser((id, done) => { 
    User.findById(id).then(user => { 
    console.log('deserialize:', user); 
    done(null, user); 
    }); 
}); 

// Local signup strategy 
passport.use('local-signup', new LocalStrategy(
    { 
    usernameField: 'email', 
    passwordField: 'password', 
    passReqToCallback: true 
    }, 
    (req, email, password, done) => { 
    User.findOne({ 'local.email': email }, (err, user) => { 
     if (err) { return done(err); } 

     if (user) { 
     console.log('user error:', user); 
     return done(null, false, req.flash('signUpMessage', 'That email is already taken.')); 
     } else { 
     new User({ 
      'local.email': email, 
      'local.password': password 
     }) 
     .save() 
     .then(user => { 
      done(null, user) 
     }) 
     .catch(err => { 
      console.log('error:', err); 
      done(err); 
     }); 
     } 
    }); 

    } 
)); 

authRoutes.js:

const passport = require('passport'); 

module.exports = app => { 
    app.post(
    '/api/signup', 
    passport.authenticate('local-signup', { 
     failureFlash: true 
    }), 
    (req, res) => { 
     console.log('request:', req); 
     console.log('flash msg:', req.flash('signUpMessage')); 
     res.send(req.user); 
    } 
); 

    app.get('/api/current_user', (req, res) => { 
    console.log('current_user:', req.user); 
    res.send(req.user); 
    }); 

    app.get('/api/logout', (req, res) => { 
    req.logout(); 
    res.redirect('/'); 
    }); 
}; 

Github上:https://github.com/drhectapus/voting-app

回答

1

我覺得你可以做

console.log('flash msg:', req.flash('error')); 

failureFlash: req.flash('error'); 
相關問題