Информация о экспресс-JWT модуля можно найти здесь:экспресс-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: No authorization token was found
Он по-прежнему защищает маршруты I, указанными беззащитны! Я также пробовал:
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...)
через this answer, но это решение не дает мне желаемой функциональности.
У меня была аналогичная проблема, и эта линия, кажется, решили ее: app.use (функция (ERR, REQ, Рез, следующий) { res.status (err.status || 500) Пошлите (ERR); }); Я получал тот же «UnauthorizedError» в консоли для КАЖДОГО маршрута, прежде чем я начал использовать это. Теперь я получаю ошибки только при доступе к незащищенным маршрутам. Что сделала эта магия для ее решения? – Ska