javascript - 如何让 flash 消息与 Handlebars 一起使用?

标签 javascript node.js passport.js connect-flash

我试图让 Flash 与我的 Handlebars 模板一起工作,但它不起作用。如何显示消息

if (!user) return done(null, false, { message: 'No user found'})

return done(null, false, { message: 'Oops! Wrong password.'})

在警告框中?

已安装的软件包:express、connect-flash、express-handlebars、passport、passport-local、express-session、connect-mongo

app.use(flash())

passport.use(new LocalStrategy(function(username, password, done) {
  User.findOne({ username: username }, function(err, user) {
    if (err) return done(err)
      if (!user) return done(null, false, { message: 'No user found'})
        user.comparePassword(password, function(err, isMatch) {
          if (isMatch) {
            return done(null, user)
          } else {
            return done(null, false, { message: 'Oops! Wrong password.'})
          }
        })
    })
}))

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

Handlebars 模板:

{{#if message}}
<div class="alert alert-danger">{{message}}</div>
{{/if}}

最佳答案

app.get('/login', function(req, res) {
    res.locals.message = req.flash('message');
    res.render('login');
});

关于javascript - 如何让 flash 消息与 Handlebars 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182357/

相关文章:

javascript - 需要 Node 模块 var 或 const 的最佳方式是什么?

node.js - Jade 中的 Flash 消息

node.js - 错误 : failed to find request token in session

javascript - Jasmine Maven 插件包括我使用文件协议(protocol)的脚本

javascript - 如何刷新首页或通过一个链接进入首页?

javascript - 使用 HTMLMediaElementSourceNode 时 <video>.playbackRate 在 Firefox 上不起作用

javascript - css 属性仅适用于代码 - javascript

javascript - 如何在js中从时间戳数组中匹配并获取日期

javascript - 实现eccjs库时出错

javascript - Node.js 未处理的 promise 拒绝