从中间件中排除指定的路由

时间:2016-01-30 01:39:00

标签: javascript node.js express

我有这个中间件检查用户会话的每个路由。这只是在用户登录时执行,转到下一个功能。

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不应该检查用户登录会话。

1 个答案:

答案 0 :(得分:0)

req.originalUrl告诉您URL是什么,因此您可以通过检查中间件功能中的URL来决定跳过逻辑。

或者,您可以为在此路由器之前处理的公共路径设置单独的路由器,因此如果请求与公共路径路由器匹配,那么它将已经被处理,因此在稍后的路由器中的这个中间件将不会被“处理”。被称为。这就是Express希望您为不同的顶级路径使用不同的中间件 - 通过使用单独的路由器。