2017-08-18 4 views
0

はありますか?router.useメソッドで検証した後、router.getメソッドで変数を再度検証する必要がありますか?私はgetメソッドでデータを再検証する必要があり、私は私が理解していないだけで</p> <p>何の使用方法でデータを検証していたデータベース</p> <p>としてNodejsとExpressのフレームワークとMySQLを使用しています

私はこのコード

var express = require('express'); 
var router = express.Router(); 
var jwt = require('jsonwebtoken'); 

function isNullOrWhitespace(input) { 
if (typeof input === 'undefined' || input == null) return true; 
return input.replace(/\s/g, '').length < 1; 
} 

function hasWhiteSpace(s) { 
return /\s/g.test(s); 
} 



router.use(function(req, res, next) { 
var auth_key = req.headers['auth_key']; 
var api_key = req.query['api_key']; 
var source_id = req.query['source_id']; 
if((auth_key) && (api_key) && (source_id) && (auth_key!==undefined) && (api_key!==undefined) &&(source_id!==undefined) && !isNullOrWhitespace(auth_key) && !isNullOrWhitespace(api_key) && !isNullOrWhitespace(source_id) && !hasWhiteSpace(auth_key) && !hasWhiteSpace(api_key) && !(hasWhiteSpace(source_id))) 
{ 
next(); 
} 
else 
{ 
    if((!auth_key) || (auth_key===undefined) || isNullOrWhitespace(auth_key) || hasWhiteSpace(auth_key)) 
    { 
     var auth_key_error = { 
     status : "fail", 
     message : "Invalid Auth Key" 
    }; 


     return res.status(403).send(auth_key_error); 
} 
    else if((!api_key) || (api_key===undefined) || isNullOrWhitespace(api_key) || hasWhiteSpace(api_key)) 
    { 
     var api_key_error = { 
      status : "fail", 
      message : "Invalid API Key" 
     }; 


     return res.status(403).send(api_key_error); 

    } 
    else if((!source_id) || (source_id===undefined) || isNullOrWhitespace(source_id) || hasWhiteSpace(source_id)) 
    { 
     var sourceid_error = { 
      status : "fail", 
      message : "Invalid Source ID" 
     }; 


     return res.status(403).send(sourceid_error); 

    } 
    else{ 
     var fieldsempty_error = { 
      status : "fail", 
      message : "Some field was incorrect or left empty" 
     }; 


     return res.status(403).send(fieldsempty_error); 
    } 
} 

}); 

router.get('/', function (req, res, next) { 


var auth_key = req.headers['auth_key']; 
var api_key = req.query['api_key']; 
var source_id = req.query['source_id']; 
//do something here 





}); 

module.exports = router; 

を持っている今、私は適切にgetメソッドでこれらの変数にアクセスする方法をgetメソッド

で再び変数は[]ヘッダ[]とクエリ文字列を使用したいですか?

また、サニタイズとは何ですか?

このコードで変数のサニタイズを実行する必要がありますか?

またもう一つ..私たちは唯一のミドルウェアのために1つの利用機能を持っている場合、我々は何をすべき次のメソッドは次の順序ミドルウェアの機能を実行するために使用されていることを

を読みますか?

答えて

0

論理的にあなたのデータの検証は、別のルートエンドポイントと異なる場合がありますので、それはあなたが(...削除、ポスト、取得)を使用している動詞に応じroute.use()が、使用方法を使用しない方が良いでしょう。

使用express-validatorあなたのデータを検証するために、それは人間が読める均一なコードに非同期/シンクロンの検証を行うための可能性を提供します。データを取得するアクセスするには

送信されたURLがある場合、彼らは、req.queryにusallyです: host.com?data1=x ==> req.query.data1

彼らは体内にある場合これは、post/put/patchリクエストの場合には通常ですが、req.body.data1を使用します。

あなたのデータにアクセスするには、それらをエンコードする必要があります。あなたはJSON形式でデータを送信した場合、あなたは、このようにそれらにアクセスできるように、この目的のためにいくつかのミドルウェアを使用して、それらにアクセスする前にそれらをデコードする必要があります。 req.body.name ....

関連する問題