Как защитить маршруты в польке - PullRequest
3 голосов
/ 20 мая 2019

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

const polka = require('polka');
const send = require('@polka/send-type');

const app = polka();

app.get('/un-protected', (req, res) => {
  return send(res, 200, {
    msg: 'Unprotected route',
  });
});

const auth = false;

app
  .use((req, res, next) => {
    if (auth) {
      next();
    } else {
      return send(res, 401, {
        errors: {
          msg: 'unauthorized',
        },
      });
    }
  })
  .get('/protected', (req, res) => {
    return send(res, 200, {
      msg: 'Protected route',
    });
  });

const PORT = process.env.PORT || 8080;

app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

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

1 Ответ

3 голосов
/ 20 мая 2019

Проверка подлинности должна быть помещена между указанным маршрутом и действием при переходе к защищенному маршруту.

app.get('/un-protected', (req, res) => {
  return send(res, 200, {
    msg: 'Unprotected route',
  });
});

const auth = false;

const checkAuth = (req, res, next) => {
  if (auth) {
    next();
  } else {
    return send(res, 401, {
      errors: {
        msg: 'unauthorized',
      },
    });
  }
}

app
  .get('/protected', checkAuth, (req, res) => {
    return send(res, 200, {
      msg: 'Protected route',
    });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...