我有这个中间件检查用户会话的每个路由。这只是在用户登录时执行,转到下一个功能。
router.use(function(req, res, next){
if(!req.user){
res.redirect('/login');
}else{
res.locals.username = req.user.username;
return next();
}
});
但如何将其排除在特定路线之外?例如,我想在我的应用程序中执行公共API。例如example.com/api/items不应该检查用户登录会话。
答案 0 :(得分:0)
req.originalUrl
告诉您URL是什么,因此您可以通过检查中间件功能中的URL来决定跳过逻辑。
或者,您可以为在此路由器之前处理的公共路径设置单独的路由器,因此如果请求与公共路径路由器匹配,那么它将已经被处理,因此在稍后的路由器中的这个中间件将不会被“处理”。被称为。这就是Express希望您为不同的顶级路径使用不同的中间件 - 通过使用单独的路由器。