私は grails 1.2 アプリを持っており、ロールに基づいてアクセスを制限するために宣言型セキュリティを使用したいと考えています。shiro を試すことにし、プラグインをインストールしましたが、認証しようとすると、ヘッダーに「無効なユーザー名および/またはパスワード」というメッセージが表示されます。私はデータベースエントリをチェックし、ユーザーはsha'edパスワードでそこにいます。コンソールにもスタックトレースファイルにもメッセージは表示されません。「warn 'org.jsecurity'」を Config.groovyに追加しましたが、結果はありませんでした。これをトラブルシューティングするためのヒント/コツはありますか?
3 に答える
私もこの問題に遭遇しました...ユーザーのパスワードをどのように保存していますか?クイックスタートを実行した後、Shiroプラグインページの例に従い、ブートストラップ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に変更した後...ログインできました!
更新:「quick-start」を実行した後、デフォルトのShiroプラグイン設定で新しいアプリを作成しました。ユーザーを作成する場合は、そのままSha256Hashを使用する必要があります。ただし、Springのresources.groovyファイルにBeanを追加することで、Sha512HashまたはSha1Hashを使用できます。
Sha512Hashの例:
beans = {
bean {
credentialMatcher(Sha512CredentialsMatcher) {
storedCredentialsHexEncoded = true
}
}
}
クイックスタートを実行しましたか? デフォルトのデータベース レルムを使用していますか?
使用しているレルムをデバッグして、何が起こっているかを確認します。
shiro のトラブルシューティングについてはお手伝いできませんが、より強力なソリューションをお探しの場合は、nimble をご覧ください。これは shiro に基づいており、多くの追加機能と柔軟性を提供します。
最新のものは次の方法でインストールできます。
grails install-plugin nimble 0.4-SNAPSHOT