2016-11-08 89 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'); 
});