我正在尝试在我的Grails + Spring Security应用程序中进行盐渍密码散列。我使用过Grails网站上的教程,以及我在互联网上随机找到的教程。
目前,我根据this教程设置了所有内容。但是,在resources.groovy
中使用以下bean声明部署应用程序时遇到问题:
saltSource(cq.MySaltSource) {
userPropertyToUse = CH.config.grails.plugins.springsecurity.dao.reflectionSaltSourceProperty
}
它抱怨找不到CH
。
在挖掘之后,我在nabble上发现了一条帖子,说明了以下内容:
另外 - 不要使用ConfigurationHolder(CH),因为它在2.0中已弃用。您可以传入对grailsApplication bean的引用并从那里获取配置:
saltSource(MySaltSource) {
grailsApplication = ref('grailsApplication')
}
然后在你的课程中添加
def grailsApplication
通过
获取财产
String userPropertyToUse grailsApplication.config.grails.plugins.springsecurity.dao.reflectionSaltSourceProperty
我不遵循的部分是关于“......并通过...获取财产”的最后陈述。他给出的代码行似乎对我不利。
如果有人可以在这里说清楚,或者提供一种不同的方法来使用Grails和Spring Security的盐渍密码,我将不胜感激。请注意,它必须是每个用户的唯一盐,不是系统范围的盐或单一盐,或来自username
的盐。
由于
更新
所以我使用了第一个教程(忘记了import
顶部的resources.groovy
语句。但是我还是想使用第二种方式(以保持与未来版本兼容)
更新2
如果有人在这里感兴趣,我已经写了一个完整的教程:
Setting up a Grails web application using Spring Security and salted passwords.
答案 0 :(得分:4)
在resources.groovy
您定义saltSource
bean的地方,GrailsApplication
可用作application
变量,因此您可以将bean声明更改为
saltSource(cq.MySaltSource) {
userPropertyToUse = application.config.grails.plugins.springsecurity.dao.reflectionSaltSourceProperty
}