我想在express路由器上使用HTTP ()方法来为具有不同方法的特定路由提供服务。下面的代码运行良好:
var express = require('express');
var router = express.Router();
router.route('/register')
.get(adm.signUpForm)
.post(adm.signUp);
然而,当我试图在post路由上使用中间件时,我被卡住了。下面的代码可以工作:
// LOGIN processing
router.post('/login', passport.authenticate("local", {
successRedirect: '/',
failureRedirect: '/login'
}), function(){
//empty
});
这里,中间件函数passport.authenticate(...)以检查用户凭据是否有效。经过身份验证的用户被重定向到主页的"/";未知用户(或密码不正确)被重定向回"/login“表单。
现在,我想对这段代码进行重构,并使用类似于上面显示的代码示例(注册路由),即我想使用router.route('/login).xxxx在路由'/login‘上为HTTP request xxxx提供服务。我如何告诉express在对‘/ passport.authenticate’的POST请求中使用我的登录中间件函数?
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请求时调用我的中间件。
有什么建议吗?谢谢。
https://stackoverflow.com/questions/56569169
复制相似问题