Аутентификация пользователя при переходе по ссылке

#javascript #node.js #express #authentication #cookies

Вопрос:

Я аутентифицирую пользователя с помощью файлов cookie, сохраненных в запросе, с помощью промежуточного программного обеспечения для аутентификации, которое я включил ниже.

 const Authenticate = async (req, res, next) =gt; {  try {  const token = req.cookies.jwtoken;  const verifyToken = jwt.verify(token, JWT_SECRET);   const mainUser = await User.findOne({  _id: verifyToken._id,  "tokens.token": token,  });   if (!mainUser) {  throw new Error("User not Found");  }   req.token = token;  req.mainUser = mainUser;  req.email = mainUser.email;  req.userID = mainUser._id;  // console.log(req.mainUser._id);  // console.log(req.email);  next();  } catch (error) {  res.send({ status: "error", error: error.message });  console.log(error);  } };  

Я хочу аутентифицировать пользователя, когда он нажимает на любую ссылку в навигационной панели на главной странице. Прямо сейчас это просто приведет пользователя на любую страницу, даже если они еще не подписаны/ аутентифицированы. Ссылки-это просто теги привязки в navbar.

Все мои страницы являются статическими html — страницами, обслуживаемыми nodejs. Это то, что я пытался аутентифицировать пользователя, но, похоже, это не работает

 app.get("/mycourses.html", auth, (req, res) =gt; {  console.log(req.email); });  

Ожидаемая функциональность заключается в том, что пользователю предлагается войти в систему/выдается ошибка при нажатии на любую ссылку на домашней странице, когда пользователь не вошел в систему.

Комментарии:

1. я не думаю , что req.email или что-то другое работает нормально , обычно у req есть тело, запрос, заголовки

Ответ №1:

просто используйте промежуточное программное обеспечение аутентификации, которое у вас есть в каждом отдельном приложении.get(‘/**’) в вашем коде и внутри вашего блока if используйте res.redirect(‘/login’)

 if (!mainUser) {  //this line will redirect user to login page for example  res.redirect('/login');  throw new Error("User not Found");  }  

получайте удовольствие!!