2015-11-06 83 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

您的论点非常有道理,我之前没有这样想过。 我只是从一个角度思考,我必须做出不同的数据库请求才能使端点失效。但先做授权完全没问题。 –