【问题标题】:Hapijs validate params before authenticationHapijs 在身份验证之前验证参数
【发布时间】:2015-11-09 10:52:04
【问题描述】:

我对 Hapi 如何处理验证有点困惑,根据请求生命周期 (http://hapijs.com/api#request-lifecycle),参数/查询的验证仅在身份验证完成后发生。

这样做有意义吗?例如,我正在开发一个公共 API,但如果请求参数无效,我不想遍历所有的身份验证逻辑。

通过以下验证提出请求:

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

由于name 未发送而导致请求无效时,为什么API 会遇到验证用户的麻烦?

还是我只是误解了请求的生命周期?

【问题讨论】:

    标签: javascript node.js validation hapijs


    【解决方案1】:

    当验证失败时,hapi 返回有关为什么验证失败的信息。在您的示例中,路由需要一个名为 name 的参数。出于安全原因,您可能不想告诉未经身份验证的用户此路由需要此参数。这会泄露很多信息吗?

    就我个人而言,我认为首先进行身份验证有几个原因:

    1. 更重要的是告诉用户他们无权访问端点,或者他们的请求无效?我认为授权更重要。

    2. 出于安全原因,请勿透露任何不必要的信息。

    3. 一旦建立了身份验证方法,对请求进行身份验证的“工作”量是相同的,但请求之间的验证可能会有很大差异。一条路线可能有许多需要验证的参数。因此,如果您必须平均失败请求的成本,那么身份验证可能比许多请求更便宜。 (见 JWT 认证)

    【讨论】:

    • 你的论点很有道理,我以前没有这样想。我只是从一个角度考虑,我必须发出不同的数据库请求才能使端点失败。但是先做授权是完全没问题的。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多