freeCodeCamp/curriculum/challenges/portuguese/06-information-security-and.../advanced-node-and-express/create-new-middleware.portu...

2.9 KiB

id title challengeType videoUrl localeTitle
5895f70df9fc0f352b528e6a Create New Middleware 2 Crie um novo middleware

Description

Como lembrete, este projeto está sendo construído sobre o seguinte projeto inicial no Glitch , ou clonado a partir do GitHub . Como em qualquer usuário pode apenas ir para / perfil se eles autenticados ou não, digitando o URL. Queremos evitar isso verificando se o usuário é autenticado antes de renderizar a página de perfil. Este é o exemplo perfeito de quando criar um middleware. O desafio aqui é criar a função de middleware ensureAuthenticated(req, res, next) , que verificará se um usuário é autenticado chamando os passaportes isAuthenticated na solicitação, que por sua vez verifica se req.user deve ser definido. Se é então next () deve ser chamado, caso contrário, podemos apenas responder à solicitação com um redirecionamento para a nossa página inicial para login. Uma implementação deste middleware é:
 function ensureAuthenticated (req, res, next) {
  if (req.isAuthenticated ()) {
      return next ();
  }
  res.redirect ('/');
}; 
Agora, adicione ensureAuthenticated como um middleware para a solicitação da página de perfil antes do argumento para a solicitação get contendo a função que renderiza a página.
 app.route ('/ profile')
  .get (ensureAuthenticated, (req, res) => {
       res.render (process.cwd () + '/ views / pug / profile');
  }); 
Envie sua página quando achar que está certo.

Instructions

Tests

tests:
  - text: O middleware ensureAuthenticated deve ser implementado e em nossa rota / profile
    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: Uma solicitação Get para / profile redireciona corretamente para / uma vez que não somos autenticados
    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