2017-08-09 14 views
0

expressのGETメソッドのスキップトークン検証が必要です。私は誰でもGETリクエストを許可したいのですが、承認されたuser.belowによるリクエストを削除して投稿するだけで、私のロジックは変わりますが、レスポンスはハングアップします。ネストされた表現方法を使用しようとしました。GETリクエストのトークン検証をスキップ

app.use(function(req, res, next) { 
if (req.method === 'GET') { 

    app.use('/api/someroute', routes); 

} 
else{ 
    //do verification below the next 
    next(); 
    } 
}) 

またはこの

+0

あなたの 'GET'ルートを最初にセットアップしてから、トークン認証ミドルウェアを適用すると、それ以降のルートはすべて保護されます。 – James

+0

私は別のルートファイルで50以上のGETリクエストを持っていますので、それぞれの方法で難しいですが、上記を試してみましょう。私はapp.useの代わりに各ルート – Developer

+0

のapp.getを試してみたいので、あなたの '/ api/someroute '全体が' GET'リクエストであることを確認するだけですか? – James

答えて

0

を処理するための他の方法がありますだけで希望のルート上のミドルウェアを含める:

myMiddleware1とmyMiddleware2がどのように見える
var router = express.Router(); 

// no middleware included for get request 
router.get("/route1", handlerRoute1); 
router.get("/route2", handlerRoute2); 

// include some middleware 
router.post("/route3", myMiddleware1, myMiddleware2, handlerRoute3); 
app.use(router); 

myMiddleware1 = function(req, res, next){ 
    // verify token, etc, .... 

    var success = true; 

    // call next on success 
    if(success) 
     return next(); 
    else 
    { 
     // raise error 
     return res.status(500).json({error: "Missing token..."}); 
    } 
}; 
+0

app.use cozに50個のルートがあるのでrouter.get( "/ route1 "、handlerRoute1);これは動作しません – Developer

+0

メソッドが取得する場合は、トークンを確認しない場合は許可してください – Developer

0

にですGETリクエストのシナリオでは、実際にリクエストを完了していないため(またはそのミドルウェア)。ミドルウェアは、順番に処理される。すなわち、最初に最初に処理される。あなたが唯一のGETリクエスト以外のすべてのものを保護したい場合は、このようなものは、罰金のようになります。

app.use(function(req, res, next) { 
    // let GET requests through 
    if (req.method === 'GET') return next(); 

    // perform token auth on all other requests, next() if OK 
}); 
// setup routes 
app.use('/api/someroute', routes); 

セットアップあなたのミドルウェアが最初にした後、あなたのルートを宣言し、これは、入ってくるすべての要求があなたを通過しなければならないことを意味しトークンチェック。この場合、GETリクエストをスキップするだけです。

+0

おかげでジェームズしかし、私は私が投稿を保護したいと言及している間にすべての要求を取得している間に保護されていない残したい – Developer

+0

@ ? – James

関連する問題