2017-10-15 9 views
0

私は、ユーザーが既に取得された電子メールにサインアップしようとすると、それは電子メールがあることを示すメッセージ」を点滅されるように、私はそれをしたいと思いpassport.jsにfailureFlashにPassport.jsローカル戦略のフラッシュメッセージを表示するにはどうすればよいですか?

を使用してパスポートローカル戦略を実行しようとしています使用中'。

私は行番号failureFlash: trueを追加しましたが、実際に画面に表示されるようにフラッシュメッセージにアクセスするにはどうすればよいですか?

私はこのすべてにかなり新しいので、どんな助けも素晴らしいでしょう。

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:私はあなたが

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

またはを行うことができると思いhttps://github.com/drhectapus/voting-app

答えて

1
failureFlash: req.flash('error'); 
関連する問題