2015-11-06 80 views
0

之前PARAMS我變得有點困惑哈皮如何處理驗證,根據請求生命週期(http://hapijs.com/api#request-lifecycle)PARAMS /查詢驗證只發生認證已經完成之後。Hapijs驗證認證

這樣做有意義嗎?例如,我正在開發一個公共API,但如果請求參數無效,我不想通過所有的身份驗證邏輯。

說與下面的驗證請求:

validate: { 
    name: Joi.string().required() 
} 

爲什麼會API經過驗證用戶的麻煩時,請求將是無效的,由於name不是派?

或者這只是我誤解了請求生命週期?

回答

3

當驗證失敗時,hapi返回有關的信息爲什麼驗證失敗。在你的例子中,路由需要一個叫做name的參數。出於安全原因,您可能不想告訴未經身份驗證的用戶此路線需要此參數。這給了很多信息的權利?

就我個人而言,我認爲有以下幾個原因認證第一完成:

  1. 什麼是更重要的,告訴他們沒有被授權訪問端點,或者他們的請求是無效的用戶?我認爲授權更重要。

  2. 出於安全原因,不透露任何詳細信息比是絕對必要的。

  3. 一旦建立了認證方法,認證請求的「工作」數量是相同的,但驗證在請求之間可能會有很大差異。一條路線可能有許多參數需要驗證。因此,如果您不得不平均處理失敗請求的成本,那麼對於許多請求,身份驗證可能會更便宜。 (請參閱JWT認證)

+0

您的論點非常有道理,我之前沒有這樣想過。 我只是從一個角度思考,我必須做出不同的數據庫請求才能使端點失效。但先做授權完全沒問題。 –