Сообщение об ошибке «connect-flash» не отображается на всех маршрутах, содержащих промежуточное ПО - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над сайтом, чтобы проводить онлайн-лекции.Веб-сайт имеет панель пользователя, которая требует входа в систему, а также для регистрации на курс, который пользователь должен войти.У меня есть установка промежуточного программного обеспечения, которая проверяет, вошел ли пользователь в систему или нет, что прекрасно работает.Сейчас я использую «connect-flash», чтобы показать сообщение «Пожалуйста, войдите!»если пользователь пытается зарегистрироваться для курса или напрямую войти в маршрут панели мониторинга без входа в систему. В моем случае проблема заключается в том, что хотя и маршрут регистрации, и маршрут панели мониторинга используют одно и то же промежуточное программное обеспечение, которое проверяет, вошел ли пользователь в систему илинет, и для перенаправления на страницу входа, если пользователь не вошел в систему, мое флеш-сообщение «Пожалуйста, войдите!» работает только на маршруте панели мониторинга, а не на маршруте регистрации курса.

Я добавляюсвязанные коды и функции промежуточного программного обеспечения. Любое предложение будет оценено. Спасибо

Добавление необходимых библиотек

var express                     =require("express"),
app                             =express(),
mongoose                        =require('mongoose'),
passport                        =require('passport'),
LocalStrategy                   =require("passport-local"),
methodOverride                  =require('method-override'),
flash                           =require('connect-flash'),
passportLocalMongoose           =require("passport-local-mongoose"),
bodyParser                      =require("body-parser");

Импорт необходимых моделей MongoDB. (Хотя я не думаю, что здесь есть проблема)

var User                            =require('./models/user');
var CourseCompletion                =require('./models/coursecompletionmodel.js');
var coursedetailmodel               =require("./models/coursedetailmodel.js"); 

Настройка паспортных и подключаемых флеш-модулей для приложения

app.use(require("express-session")({
secret: "sunjeetjena1995",
resave: false,
saveUninitialized: false
}));
app.use(flash());
mongoose.connect("mongodb://localhost/DeepEigen_database")
app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");
app.use(express.static(__dirname + '/public'));
app.use(methodOverride('_method'));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new      LocalStrategy(User.authenticate({username:"username",password:"password"})));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(function(req,res,next){
res.locals.currentUser=req.user;
res.locals.error=req.flash('error');
next();
});

.get Маршрут к приборной панели

app.get('/dashboard', isLoggedIn,function(req, res){
var id=req.user._id;

  User.findById(id).populate("courses_registered_details").populate("course_completion").exec(function(err,founduser){
    if(err){
        console.log('A user failed to redirect to the dashboard');
        console.log(err);
    }
    else{
        res.render('dashboard', {user:founduser});
    }
})
});

. Получить маршрут для регистрации накурс

app.get('/:id/machinelearningcoursedetails', isLoggedIn, function(req,res){

var id=(req.params.id);
console.log(id);
CourseCompletion.create({user_name:req.user.username,name:'Machine Learning',completed_numbers:0, inweek:0, total:10}, function(err, newccmodel){
    if(err){
        console.log(err);
    }
    else{
        User.findOneAndUpdate(id,{$push:{courses_registered:{course:"Machine Learning", date:Date.now()},
        course_completion:newccmodel}}, function(err, user){
        if (err) {
                    console.log("Something wrong when updating data!");
                    console.log(err);
                }       
        else{
            coursedetailmodel.findOne({coursename:'Machine Learning'}, function(err, coursedetail){
                if(err){
                    console.log('There is an error is adding the course detail data to the user object');
                }   
                else{
                    User.findOneAndUpdate(id, {$push: {courses_registered_details:coursedetail}}, function(err, user){
                        if(err){
                            console.log('There was an error in adding course details object to User Object in Machine Learning');
                        }
                        else{
                            console.log('A user Successfully Registered for the Machine Learning Course');
                            console.log(req.user.username, req.user.email, req.user.profession);
                        }
                    })
                }
            });
        }
        });
    }
});
res.redirect( '/dashboard');
});

Путь к странице входа в систему

app.get('/login', function(req, res){
console.log(res.locals.error);
res.render('login');
});

Промежуточное ПО для проверки, авторизован вы или нет

function isLoggedIn(req,res,next){
if(req.isAuthenticated()){
    return next();
}
else{
    req.flash('error','Please Login!');
    res.redirect("/login");
}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...