2010-01-19 72 views
0

我有一个grails 1.2应用程序,我想使用声明性安全性来限制基于角色的访问。我决定尝试shiro,安装插件,但是当我尝试进行身份验证时,消息“无效的用户名和/或密码”显示在标题中。我检查数据库条目和用户在那里与sha'ed密码。控制台和堆栈跟踪文件中都不显示任何消息。我将“warn'org.jsecurity'”添加到Config.groovy中,但没有任何结果。任何提示/技巧来解决这个问题?使用shiro在grails应用程序中进行身份验证的问题

+0

新增信息“grails.app,org.apache.shiro”没有运气 – xain 2010-01-19 18:55:23

回答

1

我就遇到了这个问题,以及...你是如何节省了用户的密码?运行快速启动后,我跟着四郎插件页面上的例子,下面添加到我的引导init方法的代码:

import org.apache.shiro.crypto.hash.Sha512Hash 

def user = new ShiroUser(username: "user123", passwordHash: new Sha512Hash("password").toHex()) 
user.save() 

我会尝试登录,将继续得到登录失败。所以我试了

def user = new ShiroUser(username:'admin', passwordHash:new Sha256Hash("admin").toHex()) 
user.save() 

从Sha512Hash更改为Sha256Hash后...我能够登录!

更新:刚刚创建一个新的应用程序与默认Shiro插件设置后运行'快速启动'。如果你要创建一个用户,你会想要使用Sha256Hash开箱即用。但是,您可以通过将bean添加到Spring的resources.groovy文件来使用Sha512Hash或Sha1Hash。

举例Sha512Hash:

 
beans = { 
    bean { 
    credentialMatcher(Sha512CredentialsMatcher) { 
     storedCredentialsHexEncoded = true 
    } 
    } 
} 

+0

Yep ..用全新的Shiro插件创建了一个新的Grails应用程序。创建一个用户,其中passwordHash设置为Sha512Hash,另一个用Sha256Hash。默认设置设置为Sha256Hash ..登录失败,用户设置为Sha512Hash并成功登录,并且用户密码设置为Sha256Hash! – mcroteau 2010-08-08 21:43:09

+0

我在哪里可以在实际的插件中找到这个? – mcroteau 2010-08-08 21:43:32

0

您是否运行了快速入门?你使用默认的数据库领域?

我会通过你正在使用的Realm进行调试,看看发生了什么。

+0

我没有运行快速启动和“ShiroUser”中创建的配置数据库通过Bootstrap。我如何通过领域进行调试?提前致谢。 – xain 2010-01-22 02:55:01

+0

快速启动应该已经创建了默认领域。你如何调试取决于你的IDE,但你可以用grails-debug run-app启动grails,调试器将监听默认端口。你只需要连接你的IDE,并在grails-app/realms中设置一个断点/ ShiroDbRealm.groovy – leebutts 2010-01-22 07:17:07

0

我无法帮助shiro排除故障,但如果您正在寻找更强大的解决方案,您可能需要检查敏捷。它基于shiro并提供了很多附加功能和灵活性。

您可以安装最新的搭配:
grails install-plugin nimble 0.4-SNAPSHOT

nimble documentation

+0

最新的灵活文档在这里http://snimavat.github.io/nimble/index.html – 2013-12-16 17:37:36

相关问题