2010-01-19 74 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

相關問題