gpt4 book ai didi

node.js - 快速闪现消息不适用于护照自定义回调

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:06 25 4
gpt4 key购买 nike

我正在使用express 4、passport 和express-flash。当我使用 jar 装护照中间件功能并设置 failureFlash: true 时,一切正常。但是,当我在同一路由文件的注册函数中使用自定义回调时,它不起作用。 messages.info 对象为空。

这工作正常:

    router.post('/login', passport.authenticate('local-login', {
successRedirect: '/dashboard',
failureRedirect: '/login',
failureFlash: true
}),
function(req, res){
}
);

这会导致我的 messages.info 对象为空:

    router.post('/register', function(req, res, next){
passport.authenticate('local-signup', function(err, user, info){
if(err){
req.flash('info', err);
res.render('register');
}else{
res.render('profile');
}
})(req, res, next);
});

我使用jade作为我的预处理器:

    if (messages.info)
.message.info
span= messages.info

不干活!

最佳答案

这有效(当我输入错误的用户时,它会打印出“没有这样的用户”。它还会打印出带有错误组合的“无效密码”。):

passport.use("login", new LocalStrategy(function(username, password, done){
User.findOne({username : username}, function(err, user){
if(err){return done(err)}
if(!user){
return done(null, false, {messages : "no such user" })
}
if(user.password != password){
return done(null, false, {messages : "invalid password"})
}else{
return done(null , user);
}
})
}))



app.post("/login", function(req, res, next){
passport.authenticate("login", function(err, user, info){
if(err){ return next(err);}
if(!user){return res.render("login", {messages : info.messages})}
req.logIn(user, function(err){
if(err){ return next(err); }
return res.redirect("/authed");
})
})(req, res, next)
})
app.get("/login", function(req, res){
console.log(req.session)
res.render("login" , {messages : req.flash("error")} );
})

.ejs

<body>
Log In
<p><%= messages %></p>
<form action="/login" method = "post">
username : <input type="text" name = "username"> <br>
password : <input type="text" name = "password">
<input type="submit" value = "Submit">
</form>
</body>

关于node.js - 快速闪现消息不适用于护照自定义回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com