Pular para o conteúdo principal

Questão de Programação — Frameworks em Programação — IF Sul Rio-Grandense 2025

ProgramaçãoFrameworks em Programação
Código
qg528431
Banca
IF Sul Rio-Grandense
Órgão
IF Sul Rio-Grandense
Ano
2025
Nível
Superior
Cargo
Professor EBTT - Área 13, 17, 20, 25, 42: Informação e Comunicação I
Em uma aplicação Node.js usando o framework Express, é possível criar middlewares para diferentes propósitos, como autenticação, manipulação de requisições, e registro de logs. Suponha que você tenha a seguinte função de middleware de autenticação que verifica se o usuário tem permissão para acessar uma rota específica com base no papel (role) associado ao usuário.function authRoleMiddleware(role) { return (req, res, next) => { if (req.user.role !== role) { return res.status(403).send('Access forbidden: Insufficient permissions'); } next(); } } Este middleware é utilizado da seguinte forma para restringir o acesso de rotas a usuários com o papel de “admin”: var express = require('express'); var app = express(); app.use('/admin', authRoleMiddleware('admin')); app.get('/admin', (req, res) => { res.send('Welcome, admin!'); }); app.listen(3000); Considerando o funcionamento desse middleware, qual seria um problema que poderia surgir ao aplicá-lo em rotas que utilizam diferentes middlewares, e como esse problema pode ser resolvido?
  1. AO middleware depende da presença do req.user, que pode não ser definido se não houver outro middleware executado anteriormente que faça a autenticação. Para resolver, devese garantir que um middleware de autenticação seja aplicado antes do authRoleMiddleware.
  2. BO middleware falha em manipular requisições que possuem cabeçalhos complexos. Para resolver, o authRoleMiddleware deve ser reescrito para analisar os cabeçalhos HTTP de forma mais robusta.
  3. CO middleware pode causar conflitos quando combinado com rotas que possuem múltiplos parâmetros dinâmicos. A solução é usar router.use() em vez de app.get() para evitar que os middlewares se sobreponham.
  4. DO middleware pode interferir na performance de rotas públicas, mesmo que não exijam autenticação. A solução é aplicar o authRoleMiddleware apenas em rotas com acesso restrito usando o método .all() do Express.
Revelar gabarito e comentário

GabaritoA — O middleware depende da presença do req.user, que pode não ser definido se não houver outro middleware executado anteriormente que faça a autenticação. Para resolver, devese garantir que um middleware de autenticação seja aplicado antes do authRoleMiddleware.

Link permanente: /questoes/qg528431