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是您的类型。