带有Spring安全插件和盐渍密码的Grails

时间:2011-10-12 11:24:29

标签: grails spring-security

我正在尝试在我的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.

1 个答案:

答案 0 :(得分:4)

resources.groovy您定义saltSource bean的地方,GrailsApplication可用作application变量,因此您可以将bean声明更改为

saltSource(cq.MySaltSource) {
   userPropertyToUse = application.config.grails.plugins.springsecurity.dao.reflectionSaltSourceProperty
}