2016-11-08 88 views
0

我在node/express中使用简单的.get方法来练习。我正在关注一本书的例子,但我没有会话变量,也没有模板;所以我已经评论过这些行,并且我已经用一个简单的.send方法替换了它们,并且我用一个简单的硬编码变量代替了它:授权。node express:app.get中的模拟授权函数

,我发现了错误:ReferenceError: res is not defined

的问题是,我没有水库的变量,因为控制第一遍上的授权功能。

function authorize(req, res, next){ 
    authorized = true; 
    // if(req.session.authorized) return next(); 
    if(authorized) return next(); 
    res.send('not-authorized'); 
} 
app.get('/secret', authorize, function(){ 
    // res.render('secret'); 
    res.send('secret'); 
}); 
app.get('/sub-rosa', authorize, function(){ 
    // res.render('sub-rosa'); 
    res.send('sub-rosa'); 
}); 
+2

你可能需要'函数(REQ,RES){',而不是'函数(){'在这两种情况下。 –

+0

感谢它的作品,但我可以在路径后添加多少个函数(req,res)?我没有找到app.get的文档,它是express或node语法? – stackdave

+0

@stackdave你可以添加任意数量的它们。 'app.get('/ my/path',handler1,handler2,handlerArray,function(req,res,next){next()},function(req,res){})''。只要确保所有的处理程序都有3个参数 - “(req,res,next)',除了最后一个,不需要'next'。 – hlfrmn

回答

0

感谢意见,解决办法是:

function authorize(req, res, next){ 
    authorized = true; 
    // if(req.session.authorized) return next(); 
    if(authorized) return next(); 
    res.send('not-authorized'); 
} 
app.get('/secret', authorize, function(req, res){ 
    // res.render('secret'); 
    res.send('secret'); 
}); 
app.get('/sub-rosa', authorize, function(req, res){ 
    // res.render('sub-rosa'); 
    res.send('sub-rosa'); 
});