我从 Grails 开始,我正在关注这里的 InfoQ 电子书。
这本书在第 9 章中讲授了身份验证以及如何加密密码。下面显示了它是如何完成的,但我不明白它是如何工作的。
首先,我们需要创建一个类grails-app/utils/SHACodec.groovy
:
import java.security.MessageDigest
class SHACodec{
static encode = { target->
MessageDigest md = MessageDigest.getInstance('SHA')
md.update(target.getBytes('UTF-8'))
return new String(md.digest()).encodeAsBase64()
}
}
然后在我的User domain
,我需要添加一个闭包beforeInsert
:
class User{
...
String password
def beforeInsert = {
password = password.encodeAsSHA()
password
}
...
}
代码工作正常,但我没有看到关于如何添加类以grails-app/utils/SHACodec.groovy
启用encodeAsSHA()
在.password
User domain
由于SHACodec
该类只分配了一个闭包encode
,而从不提及encodeAsSHA()
. password
(a )是如何String
无处使用它的?
我肯定在这里遗漏了一些东西!