我想要它做什么。
router.post('/xxxx', authorize , xxxx);
function authorize(req, res, next)
{
if(xxx)
res.send(500);
else
next();
}
我想检查每个路由中的会话。但是由于路由器是这样写的。
router.route('/xxx/xxxx').post(function(req, res) {
// blah lah here...
//
});
那么我如何设置一个中间件来检查会话,我想让事情更通用一点,想让一个授权函数做一件事,而不是检查每个请求,有什么建议吗?
4条答案
按热度按时间q5lcpyga1#
在你定义/包含你的路由之前定义一个中间件函数,这将避免你在每个路由中检查一个有效的会话。参见下面的代码来了解如何做到这一点。
如果某些路由是公共的,即它们不要求用户具有有效会话,则在"使用“中间件函数之前定义这些路由
根据您的评论,您有两个选择,让这个中间件只影响一些路由,请参见下面的两个示例。
选项1-在中间件之前声明您的特定路由。
选项2在某处定义您的中间件函数,并在需要时要求它
/middleware.js
现在您可以在任何需要的地方使用它。
/index.js
希望这能让您大致了解如何实现此功能。
bxjv4tth2#
快速路由器有一个简洁的
use()
函数,可以为所有路由定义middleware。new9mtju3#
中间件:
sampleMiddleware.js
路线
ao218c7q4#
你可能已经得到了你想要的答案,但我还是会放弃这个