2011-10-12 64 views
2

我想在我的Grails + Spring Security应用程序中执行腌制密码哈希。我在Grails网站上使用了这些教程,也使用了在互联网上随机发现的教程。带有Spring Security Plugin和Salted Passwords的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派生的盐。

感谢


UPDATE

所以我得到了它的第一个教程工作(忘了在resources.groovy顶部import声明。但我还是喜欢用第二种方式(以保持与未来版本的兼容)。


更新2

我写了一个完整的教程在此,如果有人浏览这里感兴趣:

Setting up a Grails web application using Spring Security and salted passwords.

+0

教程链接已死:( –

+1

@CharlesWood更新了链接。 –

回答

4

resources.groovy你在哪里定义saltSource豆的GrailsApplication可用作application变量,因此您可以将bean声明更改为

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

传说!太感谢了。完美的作品。 –

相关问题