我有一个 grails 1.2 应用程序,我想使用声明式安全性来限制基于角色的访问。我决定尝试 shiro,安装了插件,但是当我尝试进行身份验证时,标题中显示“无效的用户名和/或密码”消息。我检查了 db 条目,并且用户在那里使用 sha'ed 密码。控制台和堆栈跟踪文件中均未显示任何消息。我在 Config.groovy 中添加了“warn 'org.jsecurity'”,但没有任何结果。解决此问题的任何提示/技巧?
问问题
2254 次
3 回答
1
我也遇到了这个问题...您如何为用户保存密码?运行快速启动后,我按照 Shiro 插件页面上的示例并将以下代码添加到我的引导初始化方法中:
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
}
}
}
于 2010-08-08T19:58:44.140 回答
0
您是否运行了快速启动?您是否使用默认数据库领域?
我会通过你正在使用的领域进行调试,看看发生了什么。
于 2010-01-19T22:06:38.487 回答
0
我无法帮助解决 shiro 故障排除,但如果您正在寻找更强大的解决方案,您可能需要查看灵活的解决方案。它基于 shiro,并提供了许多附加功能和灵活性。
您可以使用以下命令安装最新版本:
grails install-plugin nimble 0.4-SNAPSHOT
于 2010-01-20T12:13:09.460 回答