Я хотел бы использовать метод route () на экспресс-маршрутизаторе для обслуживания определенного маршрута разными HTTP-методами. Следующий код работает нормально:
var express = require('express');
var router = express.Router();
router.route('/register')
.get(adm.signUpForm)
.post(adm.signUp);
Однако при попытке использовать промежуточное программное обеспечение на маршруте почты я застреваю. Работает следующий код:
// LOGIN processing
router.post('/login', passport.authenticate("local", {
successRedirect: '/',
failureRedirect: '/login'
}), function(){
//empty
});
Здесь промежуточная функция passport.authenticate (...) вызывается для проверки правильности учетных данных пользователя. Прошедшие проверку пользователи перенаправляются на домашнюю страницу по адресу "/"; Неизвестные пользователи (или с неверным паролем) перенаправляются обратно в форму «/ логин».
Теперь я хотел бы повторно разложить этот код и использовать что-то похожее на пример кода, показанный выше (маршрут регистрации), т.е. е. Я хотел бы использовать router.route ('/ login) .xxxx для обслуживания HTTP-запроса xxxx по маршруту' / login '. Как я могу указать Express использовать мою функцию промежуточного программного обеспечения passport.authenticate при запросе POST к / login?
router.route('/login')
.get(adm.loginForm)
.post(<my-middleware-function ???>, adm.login);
... где adm.loginForm - это функция конечной точки, которая выдает форму входа в систему по запросу GET для / login и adm.login является функцией конечной точки, которая должна вызываться, когда сервер получает запрос POST на этом маршруте, т.е. е. как только форма входа в систему будет отправлена.
Насколько мне известно, документация express (4.x) ничего не упоминает об установке функции промежуточного программного обеспечения для определенного маршрута и (в то же время) определенного HTTP-запроса. Я знаю, что router.route ('/ login'). Use () может использоваться для установки функции промежуточного программного обеспечения для всех HTTP-запросов на этом маршруте, но я хочу только свое промежуточное программное обеспечение вызываться по запросам POST.
Есть предложения? Спасибо.