Files
freeCodeCamp/curriculum/challenges/russian/06-information-security-and-quality-assurance/advanced-node-and-express/create-new-middleware.russian.md

3.8 KiB
Raw Blame History

id, title, challengeType, forumTopicId, localeTitle
id title challengeType forumTopicId localeTitle
5895f70df9fc0f352b528e6a Create New Middleware 2 301551 Создать новое промежуточное программное обеспечение

Description

Напомним, что этот проект строится на следующем стартовом проекте Glitch или клонируется из GitHub . Как и в случае, любой пользователь может просто перейти к / профилю, прошли ли они проверку подлинности или нет, набрав URL-адрес. Мы хотим предотвратить это, проверив, проверен ли пользователь первым, прежде чем отображать страницу профиля. Это прекрасный пример того, когда создавать промежуточное ПО. Задача здесь заключается в создании функции промежуточного программного обеспечения, обеспечивающей ensureAuthenticated(req, res, next) , которая проверяет, аутентифицирована ли пользователь, вызывая passports isAuthenticated по запросу, который в свою очередь проверяет, что req.user должен быть определен. Если это так, то следует вызвать next () , иначе мы можем просто ответить на запрос с перенаправлением на нашу домашнюю страницу для входа. Реализация этого промежуточного программного обеспечения:
 функция makeAuthenticated (req, res, next) {
  if (req.isAuthenticated ()) {
      return next ();
  }
  res.redirect ( '/');
}; 
Теперь добавьте makeAuthenticated в качестве промежуточного программного обеспечения в запрос для страницы профиля перед аргументом запроса get, содержащего функцию, которая отображает страницу.
 app.route ( '/ профиль')
  .get (обеспечитьAuthenticated, (req, res) => {
       res.render (process.cwd () + '/ views / pug / profile');
  }); 
Представьте свою страницу, когда вы думаете, что у вас все в порядке.

Instructions

Tests

tests:
  - text: Middleware ensureAuthenticated should be implemented and on our /profile route
    testString: getUserInput => $.get(getUserInput('url')+ '/_api/server.js') .then(data => { assert.match(data, /ensureAuthenticated[^]*req.isAuthenticated/gi, 'Your ensureAuthenticated middleware should be defined and utilize the req.isAuthenticated function'); assert.match(data, /profile[^]*get[^]*ensureAuthenticated/gi, 'Your ensureAuthenticated middleware should be attached to the /profile route'); }, xhr => { throw new Error(xhr.statusText); })
  - text: A Get request to /profile correctly redirects to / since we are not authenticated
    testString: getUserInput => $.get(getUserInput('url')+ '/profile') .then(data => { assert.match(data, /Home page/gi, 'An attempt to go to the profile at this point should redirect to the homepage since we are not logged in'); }, xhr => { throw new Error(xhr.statusText); })