我正在使用@Pattern
正则表达式验证用户密码。
这很好,但随后我对密码进行了散列,这会导致密码的长度远远超过我的验证指定的16个字符。
然而,这个验证规则正在过滤到我的JPA层,所以我的哈希密码对于验证规则来说太长了,我得到了一个"验证失败……"消息。
当然,我错过了一些基本的东西,但它是什么?
感谢
这是一个典型的场景,解决方案有两种:
- 使用DTO-不是PA实体的对象,用于将数据从web层传输到服务层。因此,您只将regex验证放在DTO上,而不放在实体上
- 有一个
@Transient
字段repeatPassword
,并将验证放在那里,而不是放在数据库中持久化的字段上
简而言之,您不应该在实体的实际密码字段上有注释。关闭持久性层的验证是一种选择,但不是首选,因为这可能会导致很多副作用。