本地护照不传递消息

时间:2015-11-12 20:18:49

标签: passport.js passport-local flash-message

此处发生错误(!user == true):

        $.fancybox({
          href: "https://www.youtube.com/embed/8CR-zM6jwD8?rel=0&autoplay=1",
          type: "iframe",
          beforeShow: function () {
              // Find the iframe ID
              var id = $.fancybox.inner.find('iframe').attr('id');
              // Create video player object and add event listeners
              var player = new YT.Player(id, {
                  events: {
                      'onStateChange': function (event) {
                        console.log('onStateChange fired');
                          if (event.data === 0) {
                              console.log('ended');
                              $.fancybox.close();
                          } // if
                      } // onStateChange
                  } // events
              }); // YT.Player

              loadPage();
          }, // beforeShow
      }); // fancybox

路由器配置:

if (!user) {
        console.log('---2');
        return done(null, false, {message: 'Incorrect username.'});
    }

控制台日志显示,该消息到空。但消息完全来自另一个函数(验证码检查,使用相同的req.flash)。护照配置:

router.get('/', function(req, res, next) {
      console.log('Message:'+req.flash('message'));
      res.render('index', { title: 'Title', message: req.flash('message') });
    });

router.post('/login', passport.authenticate('local', {
        successRedirect: '/users/home',
        failureRedirect: '/',
        failureFlash: true
    }));

1 个答案:

答案 0 :(得分:0)

多么愚蠢的错误,从不信任教程,总是阅读文档... Passport通过错误属性传递消息,而不是消息属性,因此除了Jade模板之外:

if error!=''
    div.form-group.alert.alert-danger
        p #{error}

路线更正:

res.render('index', { 
    title: 'Title', 
    message: req.flash('message'),
    error: req.flash('error') 
});

请注意成功消息 - 也可通过特殊属性成功返回。