繁体   English   中英

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

[英]Exclude specified route from a middleware

我有这个中间件,可以检查用户会话的每条路由。 这只是在用户登录后直接执行的下一个功能。

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

req.originalUrl告诉您该URL是什么,以便您可以通过直接在中间件功能中检查URL来决定跳过逻辑。

或者,您可以为在此路由器之前处理的公用路径设置一个单独的路由器,因此,如果请求与公用路径路由器匹配,则该请求将已经被处理,因此不会在以后的路由器中调用此中间件。 这就是Express希望您使用不同的路由器为不同的顶级路径使用不同的中间件的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM