Я хотел бы использовать метод 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(...), чтобы проверить, действительны ли учетные данные пользователя. Аутентифицированные пользователи перенаправляются на домашнюю страницу по адресу "/"; Неизвестные пользователи (или с неправильным паролем) перенаправляются обратно в форму «/login».
Теперь я хотел бы реорганизовать этот код и использовать что-то похожее на пример кода, показанный выше (маршрут регистрации), т.е. е. Я хотел бы использовать router.route('/login).xxxx для обслуживания HTTP-запроса xxxx на маршруте '/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-запросов.
Какие-либо предложения? Спасибо.