我正在使用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返回错误
提前致谢!
答案 0 :(得分:1)
通过删除引入了有关Flash消息传递的一些问题的handlebars-helpers
库来解决问题。 (仅与Passport处理flash消息的方式结合使用)
答案 1 :(得分:0)
{{#if error}}
<div class="alert alert-danger">Invalid username or password</div>`
{{/if}}
然后它将起作用。