我有一个密码输入字段,我有一个md5转换器。
该字段与我的entity.password
字段绑定(存储为md5哈希)。
我想在其上设置f:validateLength
,因此密码必须具有一定的长度。
问题是“”空字符串也有md5哈希值。验证器不检查实际输入,而是检查转换后的md5散列。
我可以在实际输入上设置验证器,而不是转换后的验证器吗?
<ice:inputSecret value="#{user.employer.user.password}" converter="md5hashconverter">
<f:validateLength minimum="3" maximum="15"/>
</ice:inputSecret>
谢谢
修改 我正在使用Hibernate,而我的支持bean也是“模型”托管bean。我坚持使用EntityManager。
答案 0 :(得分:1)
你不能。
对我来说,这也不是真正做哈希的地方。这不是“转换”(应该是双向的)。而是在数据访问层,在INSERT
之前自己做,或者只是抓住DB的内置函数。其中大多数都提供了MD5()
函数,您可以在查询中使用INSERT INTO user (name, pass) VALUES (?, MD5(?))
。
编辑:根据更新,您使用的是Hibernate JPA。在这种情况下,您可以使用JPQL来激活内部带有MD5()
函数的“普通”保存查询,或者抓取EntityListener
(guide here)并对@PrePersist
执行操作也许@PreUpdate
。