4.1 KiB
4.1 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
5895f70df9fc0f352b528e6a | Create New Middleware | 2 | Создать новое промежуточное программное обеспечение |
Description
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: Обеспечение промежуточного ПОАутентификация должна быть реализована и на нашем / профиле
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 Получить запрос / профиль правильно перенаправляет на /, поскольку мы не аутентифицированы'
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); })'
Challenge Seed
Solution
// solution required