2016-11-08 11 views
0

私はnode/expressの簡単な.getメソッドで練習しています。私は本の例に従っていますが、セッション変数はなく、テンプレートはありません。だから私はその行をコメントして、私は単純な.sendメソッドでそれらを置き換え、単純なハードコード変数に置き換えました:権限。ノードエクスプレス:app.getのモックオーサライズ機能

私はエラーを取得しています:ReferenceError: res is not defined

問題はコントロールが認証ファンクションに最初に渡すので、私は、変数resはしている何のことではありません。

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のためのドキュメンテーションを見つけられませんでした、それは明示的またはノード構文ですか? – 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'); 
}); 
関連する問題