Я хочу отобразить флэш-сообщение в моей форме регистрации, то есть когда пользователь дает неправильные учетные данные в форме, но я не знаю, где добавить флэш, немного запутался. кто-нибудь вокруг поможет вам.
app.post('/login',passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/login"
}), function(req, res){
req.flash('error', err.message)
})
я все равно хотел бы, чтобы он отображал ошибку из формы. я новичок в этой помощи
req.flash('error', err.message)
Используйте этот код на стороне сервера:
var passport = require('passport');
var flash = require('connect-flash');
app.use(flash());
app.use(function(req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
где вы можете добавлять сообщения в свой passport.js
чтобы они отображались как:
req.flash('error_msg', 'That email is already taken.');
req.flash('success_msg', 'This is successfull');
и в вашем интерфейсном коде (в соответствии с вашим языком. Я использую дескрипторы для шаблонов front-end tempating) отображают ваши предупреждающие сообщения:
{{#if success_msg}}
<div class="alert alert-success">{{success_msg}}</div>
{{/if}}
{{#if error_msg}}
<div class="alert alert-danger">{{error_msg}}</div>
{{/if}}
{{#if error}}
<div class="alert alert-danger">{{error}}</div>
{{/if}}
в логине вам нужно ввести код в failFlash: true и установить его в true
app.use(function(req,res,next){
res.locals.error = req.flash("error");
res.locals.success = req.flash("success")
next();
})
app.post("/dashlogin", passport.authenticate("local", {
successRedirect: "/dashboard",
failureRedirect: "/dashboard/login",
failureFlash: true,
}), function(req,res){
})
Затем запустите его для пользователя на странице
<% if(error && error.length > 0) { %>
<div class="alert alert-danger" role="alert">
<div class="container">
<%= error %>
</div>
</div>
<% } %>
Вы должны установить свое сообщение для res.locals
как это
req.flash('error', 'This is an error message');
res.locals.message = req.flash();
Затем вы можете показать их в своем html как
<div class="error-message">
<strong> <%=message.message%> </strong>
</div>
Надеюсь, это поможет вам.