В моем Node / Express API для защиты моих маршрутов я использую passport.authenticate
app.get('/', passport.authenticate('jwt', { session: false}), (req, res) => { //whatever })
У меня есть дополнительное промежуточное ПО на этих маршрутах, и оно становится довольно длинным, и я не хотел требовать паспорт во всех моих файлах маршрутизатора, поэтому внутри отдельного файла я создал другой метод для существующего объекта аутентификации, который называется protect
const auth = {
protect() {}
}
Это позволяет мне сделать это
app.get('/', auth.protect, (req, res) => { //whatever })
Изначально я пытался вернуть passport.authenticate
строку
const auth = {
protect() {
return passport.authenticate('jwt', { session: false})
}
}
Но это не работает
Затем я обернул его внутри функции стрелки
const auth = {
protect() {
() => passport.authenticate('jwt', { session: false})
}
}
Теперь, когда я звоню auth.protect
на моих маршрутах, все работает просто отлично.
Дополнительно, если я просто экспортирую функцию стрелки
export const protect = () => {
return passport.authenticate('jwt', { session: false})
}
Это также работает, когда я звоню protect
на моих маршрутах.
Почему мне нужно возвращать функцию стрелки с кодом, который я хочу запустить, почему первый пример с возвратом не работает, когда я вызываю функцию на своем маршруте?