Невозможно использовать express, если только не исключить несколько маршрутов из аутентификации - PullRequest
1 голос
/ 01 августа 2020

Я новичок в js и nodejs. Итак, я попытался использовать express -jwt для аутентификации большей части моих API.

Однако я хочу исключить такие маршруты, как / login и / register from authentication

Изучив документацию express -jwt , я узнал, что существует такая библиотека под названием express -unless

Итак, я воспроизвел пример, чтобы посмотреть, смогу ли я заставить его работать. Вот код

const unless = require('express-unless');

app
  .use(authenticateWithExpressJWT)
  .unless({ path: ['/login'] });

AuthenticateWithExpressJWT - моя функция промежуточного программного обеспечения, которая отлично работает

const jwt = require('express-jwt');

const verifyJwt = jwt({ secret: 'secreyKey', algorithms: ['HS256'] });

module.exports.authenticateWithExpressJWT = verifyJwt;

Когда я искал примеры в Google или Stackoverflow, кажется, что другие не похоже, есть проблемы с использованием аналогичного кода. Однако когда я это делаю, он даже не компилируется. Я получаю эту ошибку

app.use(authenticateWithExpressJWT).unless({ path: ['/login'] });
                                    ^

TypeError: app.use(...).unless is not a function
    at Object.<anonymous> (/home/xyz/programming/node/firstApp/index.js:27:37)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

Может ли кто-нибудь помочь мне выяснить, что я делаю не так?

У меня есть другой вопрос: как люди могут использовать метод unless() без require('express-unless');?

Я получаю вышеупомянутую ошибку компиляции независимо от того, добавляю я const unless = require('express-unless'); или нет

Примечание : Я понимаю, что могу достичь то же самое без использования express-unless. Я только хочу понять, как я могу его использовать.

1 Ответ

1 голос
/ 01 августа 2020

Я лично не работал с express-unless, но, согласно документации, вы должны иметь возможность это сделать, поскольку express-jwt сам поддерживает unless:

const jwt = require('express-jwt');

const verifyJwt = jwt({ secret: 'secreyKey', algorithms: ['HS256'] })
                  .unless({path: ['/login'] });

module.exports.authenticateWithExpressJWT = verifyJwt;

В своем приложении просто используйте промежуточное ПО:

app.use(authenticateWithExpressJWT)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...