hapi route joi 验证密码确认
Posted
技术标签:
【中文标题】hapi route joi 验证密码确认【英文标题】:hapi route joi validation of password confirmation 【发布时间】: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
【问题讨论】:
【参考方案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
。
希望对某些人有用。
【讨论】:
以上是关于hapi route joi 验证密码确认的主要内容,如果未能解决你的问题,请参考以下文章