以下是注册路径
router.post("/register", function(req, res){
var newUser= new User({username:req.body.username});
User.register(newUser,req.body.password, function(error,user){
if(error){
req.flash("error", error.message);
return res.render("register.ejs");
}else{
passport.authenticate("local")(req, res ,function(){
req.flash("success","Welcome to PhotoDiary, " + user.username);
res.redirect("/diary");
});
}
});
});
下面是护照本地
app.use(function(req, res, next){
res.locals.currentUser = req.user;
res.locals.error = req.flash("error");
res.locals.success = req.flash("success");
next();
我把flash-connect放在寄存器路由req.flash中(“error”,error.message); 当我注册时,它会在另一次刷新后显示该消息,而不是在同一页面上
答案 0 :(得分:0)
使用res.locals
向视图发送错误不是一个好习惯,假设您正在使用EJS
或Pug
,您还可以将您的消息和其他数据发送到此处查看文件方式。
router.post("/register", function(req, res){
var newUser= new User({username:req.body.username});
User.register(newUser,req.body.password, function(error,user){
if(error){
req.flash("error", "An Error Has Occured");
var data = {
page_title : 'Register', // Set Page Title Dynamically
message : req.flash('error'), // Set Message
};
return res.render("register.ejs" , data);
}else{
passport.authenticate("local")(req, res ,function(){
req.flash("success","Welcome to PhotoDiary");
var data = {
page_title : 'Register', // Set Page Title Dynamically
username : user.username,
message : req.flash('success'), // Set Message
};
res.redirect("/diary", data);
});
}
});
});

您可以使用这种方式使用变量访问视图文件中的数据(EJS示例)
<Head>
<title><%= page_title %></title>
</head>
<div class="alert alert-success">
<%= message %> <%= username %>
</div>
<h1> Welcome </h1>
&#13;