Информацию о модуле express-jwt можно найти здесь:
В моем файле сервера main.js
у меня есть следующее:
import ExpressJwt from 'express-jwt';
// import other crap...
let token = ExpressJwt({
secret: 'whatever',
audience: 'whatever',
issuer: 'whatever'
});
app.all('/apiv1', token.unless({ path: ['apiv1/user/create', '/apiv1/auth/login']}));
app.use('/apiv1/user', user);
app.use('/apiv1/auth', auth);
Где user
и auth
— промежуточные программы, которые обрабатывают мои маршруты. То, что я хочу сделать, очевидно; запретить доступ к API всем неаутентифицированным пользователям, за исключением случаев, когда они пытаются создать нового пользователя через apiv1/user/create
и/или войти через apiv1/auth/login
.
Однако каждый раз, когда я пытаюсь сделать запрос к вышеупомянутым незащищенным путям, я получаю сообщение об ошибке:
UnauthorizedError: Токен авторизации не найден
Он по-прежнему защищает маршруты, которые я указал как незащищенные! Я также пробовал:
app.use('/apiv1/user', token.unless({ path: ['/apiv1/user/create'] }), user);
app.use('/apiv1/auth', token.unless({ path: ['/apiv1/auth/login'] }), auth);
Но это не сработало. Я также пытался использовать регулярное выражение для путей, кроме тех, но это тоже не сработало.
Я пришел к app.all('/apiv1', token...)
через этот ответ, но это решение работает не дают мне желаемой функциональности.