Hapijs在身份验证前验证参数
Hapijs validate params before authentication
我对Hapi如何根据请求生命周期处理验证感到有点困惑(http://hapijs.com/api#request-生命周期)参数/查询的验证仅在完成身份验证之后发生。
这样做有意义吗?例如,我正在开发一个公共的API,但如果请求参数无效,我不想通过所有的身份验证逻辑。
说出一个带有以下验证的请求:
validate: {
name: Joi.string().required()
}
当请求由于未发送name
而无效时,API为什么会遇到验证用户的麻烦?
还是我只是误解了请求生命周期?
验证失败时,hapi会返回有关验证失败原因的信息。在您的示例中,路由需要一个名为name
的参数。出于安全原因,您可能不想告诉未经身份验证的用户此路由需要此参数。这泄露了很多信息,对吧?
就我个人而言,我认为首先进行身份验证有几个原因:
-
更重要的是,告诉用户他们无权访问端点,或者他们的请求无效?我认为授权更重要。
-
出于安全考虑,不要透露任何超出绝对必要的信息。
-
一旦建立了身份验证方法,对请求进行身份验证的"工作量"是相同的,但不同请求之间的验证可能会有很大差异。一条路由可能有许多需要验证的参数。因此,如果必须平均一个失败请求的成本,那么身份验证可能比许多请求更便宜。(见JWT认证)
相关文章:
- JavaScript参数验证
- sinon.js验证mock方法's带回调的参数
- 日期验证参数
- Duo-security:如何在双因素身份验证中通过Duo.init()上的post_argument传递参数
- Stripe Connect Charge-必须作为连接帐户进行身份验证才能使用客户参数
- 表单's自定义“;“多参数”;验证器并不总是启动
- AngularJS:转发到登录页面进行身份验证,保留路由作为GET参数
- 验证请求参数的最佳方法是帆.js/节点.js
- 节点.js - 快速.js URL 参数验证
- Javascript 电话号码验证 参数符号
- 使用hapijs/joi验证参数之间的关系
- 在 SailsJS 中验证请求参数
- 验证后恢复参数
- 如何在用户验证后打开新窗口并提取参数
- Hapijs和Joi:验证存在的查询参数:'禁止'
- 具有最小/最大参数的验证编号
- Hapijs在身份验证前验证参数
- 这是验证函数接收的参数的最佳方式
- 主干:验证仅在set()参数上运行
- 如何获得验证码客户端验证参数g-recaptcha-响应后,用户确认他不是一个机器人