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