提问人:Ushahemba Shir 提问时间:9/13/2022 更新时间:11/17/2023 访问量:28038
如何使用zod检查确认密码
How to check confirm password with zod
问:
如何使用zod检查确认密码?我想用Zod验证确认密码。我希望 Zod 将我的密码与 comparePassword 进行比较
export const registerUSerSchema = z.object({
firstName: z.string(),
lastName: z.string(),
userName: z.string(),
email: z.string().email(),
phone: z.string().transform(data => Number(data)),
password: z.string().min(4),
confirmPassword: z.string().min(4),
avatar: z.string().optional(),
isVerified: z.boolean().optional()
})
答:
37赞
Souperman
9/13/2022
#1
你可以通过处理一个超级精炼
来实现这一点
export const registerUserSchema = z.object({
firstName: z.string(),
lastName: z.string(),
userName: z.string(),
email: z.string().email(),
phone: z.string().transform(data => Number(data)),
password: z.string().min(4),
confirmPassword: z.string().min(4),
avatar: z.string().optional(),
isVerified: z.boolean().optional()
}).superRefine(({ confirmPassword, password }, ctx) => {
if (confirmPassword !== password) {
ctx.addIssue({
code: "custom",
message: "The passwords did not match"
});
}
});
如果密码由于基本原因(不是至少 4 个字符)而无法解析,则会出现该错误,但如果整个基本对象成功解析,则将发生超级优化检查。
评论
0赞
Ushahemba Shir
9/14/2022
好。谢谢。由于我使用的是 MVC,因此我决定在控制器逻辑中实现它。如果下次,我将遵循这种方法。if statement
if (record.password != record.confirmPassword) { throw "Password and Confirm password didn't match"; }
17赞
jrnxf
10/3/2022
如果希望将错误绑定到该字段,请确保添加到传递给方法的对象中path: ['confirmPassword']
addIssue
0赞
Ejiro Asiuwhu
2/23/2023
请务必添加,因为它为您提供了一个键来显示错误消息path
ctx.addIssue({ code: 'custom', message: 'passwords do not match', path: ['confirm'], });
24赞
fruitloaf
2/13/2023
#2
我有这样的:
const validationSchema = z
.object({
name: string().min(1, { message: "Name is required" }), // pass custom message
email: string().email(),
website: string().optional(),
country: string(),
password: string(),
confirm: string(),
})
.refine((data) => data.password === data.confirm, {
message: "Passwords don't match",
path: ["confirm"],
});
我正在使用 React Hook Form。
以下是一些文档,我为您复制并粘贴,因此您可以了解其工作原理: https://docs.google.com/document/d/1jqTth88I-D0-qzq34B4sUGbp8wGmExS7kpc78QA_4sk/edit?usp=sharing
3赞
Nguyễn Anh Tuấn
5/3/2023
#3
您可以实现如下功能:refine
const passwordForm = z
.object({
password: z.string(),
confirmPassword: z.string(),
})
.refine((data) => data.password === data.confirmPassword, {
message: "Passwords don't match",
path: ["confirmPassword"], // path of error
});
passwordForm.parse({ password: "asdf", confirmPassword: "qwer" });
上一个:如何防止两个下拉框提交相同的值
下一个:如何使用zod检查确认密码
评论