Я работаю над сайтом, чтобы проводить онлайн-лекции.Веб-сайт имеет панель пользователя, которая требует входа в систему, а также для регистрации на курс, который пользователь должен войти.У меня есть установка промежуточного программного обеспечения, которая проверяет, вошел ли пользователь в систему или нет, что прекрасно работает.Сейчас я использую «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");
}
};