休眠验证器:验证2个字段是否匹配

问题描述 投票:0回答:4

我想知道,我是否忽略了某些内容,或者休眠验证器没有提供注释来验证两个字段是否相等(例如密码)。我知道我可以编写自己的验证器,但这似乎是标准功能。

bean-validation hibernate-validator javax.validation
4个回答
4
投票

如果您使用的是Spring Framework,则可以使用Spring Expression Language(SpEL)。我编写了一个小型库,该库提供了基于SpEL的JSR-303验证器,该验证器使跨字段验证非常容易。看看https://github.com/jirutka/validator-spring

当其中至少一个不为空时,这将验证密码字段的相等性。

@SpELAssert(value = "password.equals(passwordVerify)",
            applyIf = "password || passwordVerify",
            message = "{validator.passwords_not_same}")
public class User {

    private String password;
    private String passwordVerify;
}

0
投票

只是去了定制验证器路线。这里的其他2个答案与问题无关。经过一番谷歌搜索,我找到了一个fieldmatch示例。


-1
投票

休眠是ORM映射器。

它用于将数据持久保存到数据库中并再次提取。这样,具有2个具有相同值的字段就没有多大意义(从持久性的角度来看)。那就是您应该在业务逻辑中检查的内容。

而且我和Junesh在一起...不要以可检索的格式保留密码...查找Hasing and Salting-甚至更好的是,考虑一下openID,这样您就不必再用另一个愚蠢的密码来打扰客户了...


-2
投票

我希望您也不要在数据库中保存确认密码。您没有为此提供任何现成的验证,但是您将不得不使用自定义注释,这也非常简单。

© www.soinside.com 2019 - 2024. All rights reserved.