flash消息返回[object Object](Node Express Passport)

时间:2018-04-27 00:31:07

标签: javascript node.js express passport.js flash-message

我正在使用passport.js,并且如果用户名或密码是inoccorect设置,则想要返回flash消息。所有逻辑都已设置好,之前就已经有效了。但我以某种方式破坏了功能,即使我将工作版本1复制1,它仍然无法正常工作。 我在我的应用程序中设置了flash消息设置,它可以完美地用于所有其他不涉及passport.js的flash消息。

但是如果我尝试登录,我的flash消息为空,我收到[object Object]作为console.log。

问题1 :有没有办法访问[object Object]代表的所有信息?

问题2 :有没有办法让console.log在显示之前闪现什么? 我将如何访问这部分会话?

路线:

router.post('/',
    passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true }),
  function(req, res) {
    console.log('Login success.');
});

为上下文发送flash消息的Passport代码:

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.getUserByUsername(username, function(err, user){
      if (err) throw err;
      if (!user) {
        console.log('A user tried logging in, but username input returned unknown.');
        return done(null, false, {message: 'Unknown user.'});
      }
      User.comparePassword(password, user.password, function(err, isMatch){
        if(err) throw err;
        if(isMatch) {
          return done(null, user);
        } else {
          console.log('A user tried logging in, but password input returned invalid.');
          return done(null, false, {message: 'Invalid password.'});
        }
     });
    });
  }
));

在我的视图中显示带有把手的消息:

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

(在我正在运行的旧分支中,它返回error_msg - 在我当前的分支中,它使用[object Object] console.log返回错误

提前致谢!

2 个答案:

答案 0 :(得分:1)

通过删除引入了有关Flash消息传递的一些问题的handlebars-helpers库来解决问题。 (仅与Passport处理flash消息的方式结合使用)

答案 1 :(得分:0)

{{#if error}}
<div class="alert alert-danger">Invalid username or password</div>`
{{/if}}

然后它将起作用。