Node.js中间件使用变量进行身份验证

Node.js中间件使用变量进行身份验证,node.js,express,routes,middleware,Node.js,Express,Routes,Middleware,在我路由和呈现一个网站之前,我想检查用户是否经过身份验证,是否属于某种类型。中间件如下所示: function isAuthenticated(req,res,next,required_type){ if(Parse.User.current()){ Parse.User.current().fetch().then(function(fetchedUser){ var type = fetchedUser.get("type");

在我路由和呈现一个网站之前,我想检查用户是否经过身份验证,是否属于某种类型。中间件如下所示:

function isAuthenticated(req,res,next,required_type){
if(Parse.User.current()){
    Parse.User.current().fetch().then(function(fetchedUser){
        var type = fetchedUser.get("type");            
        if(type == required_type){
            return next();
        }else{
            res.redirect("/login");
        }

    }, function(error){
        res.redirect("/login");
    });
}else{
    res.redirect("/login");
}
}
这一部分似乎很公平和容易。以下是我在路由之前如何尝试使用中间件:

app.get('/dashboard_client',isAuthenticated, dashboard_client_view_controller.displayView);

我的问题是,如何设置所需的_类型变量,因为Node.js知道如何获取和查找req、res和next变量。谢谢你们如此愚蠢地回答我的问题,我想这是显而易见的

您可以尝试以下方法:

//中间件:

function isAuthenticated(required_type) {
    return function(req, res, next) {
        if (Parse.User.current()) {
            Parse.User.current().fetch().then(function (fetchedUser) {
                var type = fetchedUser.get("type");
                if (type == required_type) {
                    return next();
                } else {
                    res.redirect("/login");
                }

            }, function (error) {
                res.redirect("/login");
            });
        } else {
            res.redirect("/login");
        }
    }

};
//路线

app.get('/dashboard_client',isAuthenticated('admin'), dashboard_client_view_controller.displayView);
app.get'/dashboard\u client/:requiredtype',已验证,dashboard\u client\u view\u controller.displayView;然后调用GET/dashboard\u client/requiredtype,其中requiredtype是您的类型。