【问题标题】:hapi route joi validation of password confirmationhapi route joi 验证密码确认
【发布时间】:2015-07-01 20:28:46
【问题描述】:

如何检查密码和密码确认是否相同?

var Joi = require('joi'),
S = Joi.string().required().min(3).max(15);
exports.create = {
   payload: {
            username: S,
            email: Joi.string().email(),
            password: S,
            password_confirmation:  S
   }
}

【问题讨论】:

    标签: node.js hapijs joi


    【解决方案1】:

    您可以将Joi.any().valid()Joi.ref() 一起使用:

    password: Joi.string().min(3).max(15).required(),
    password_confirmation: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'must match password' } } })
    

    【讨论】:

    • onSubmit 它工作正常,但在onChange 上,即使两个字段相同,也会出现错误:(
    • @FaisalJanjua 我也遇到了同样的问题,你解决了吗?
    • @Amr 我在使用 Joi 并且有 1 年多的经验,由于这个库中的许多基本问题,我真的很失望。
    • 我开始使用Yup,我的生活变得更轻松......比你想象的要多......我创建了非常动态的表单,具有非常奇怪的功能,但从未遇到过这个库的任何限制,此外它和 Joi 一样,所以如果你有使用 Joi 的背景,你可以轻松切换到 Yup
    • codechips.me/svelte-form-validation-with-yup 这是如何开始的简单示例:)
    【解决方案2】:

    如果您收到 "language" is not allowed 错误消息。哦,你来对地方了。

    现在,2020 年和 Joi v17.2.1 我们可以使用 Joi.any().equal()Joi.any().valid()Joi.ref() 和自定义消息 messages()

    password: Joi.string().min(3).max(15).required().label('Password'),
    password_confirmation: Joi.any().equal(Joi.ref('password'))
        .required()
        .label('Confirm password')
        .messages({ 'any.only': '{{#label}} does not match' })
    

    或使用options()

    password: Joi.string().min(3).max(15).required().label('Password'),
    password_confirmation: Joi.any().equal(Joi.ref('password'))
        .required()
        .label('Confirm password')
        .options({ messages: { 'any.only': '{{#label}} does not match'} })
    

    如果不匹配,验证错误将显示ValidationError: "Confirm password" does not match
    如果您还没有通过password_confirmation,请显示ValidationError: "Confirm password" is required

    希望对某些人有用。

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2019-08-03
      • 2013-10-19
      • 2019-10-10
      • 2020-05-30
      • 2018-05-25
      • 2020-11-24
      • 2018-07-25
      • 1970-01-01
      相关资源
      最近更新 更多