【发布时间】:2013-02-20 20:37:49
【问题描述】:
我从 Grails 开始,我正在关注 here 找到的 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) 是如何随时随地使用它的?
我肯定在这里遗漏了一些东西!
【问题讨论】:
标签: grails grails-2.0