2011-08-20 113 views
7

我剛開始使用grails並安裝了spring-security和spring-security-ui插件。我正在按照給出的教程here。該應用程序以一個自舉用戶meROLE_ADMIN權限開始。Grails/Spring安全:無法用新創建的用戶登錄

隨着UI覆蓋腳本,我能夠獲得註冊功能並運行,它的工作原理是正確的。現在,我已經安裝了用戶管理腳本(grails s2ui-override user)以嘗試添加,編輯和刪除用戶。

新用戶被創建好,我已經檢查了這個HSQLDB實例。但是,如果我現在從應用程序註銷並嘗試使用新創建的用戶登錄,那麼應用程序會告訴我它無法使用提供的用戶名和密碼找到用戶。

我還沒有修改默認的註銷處理,所以我使用/j_spring_security_logout,作爲文檔說會使會話無效。

這是一個知道的問題?如果是的話我怎麼能解決這個問題,或者如果不能,我該如何調試這個問題?

編輯:

這個問題也是堅持不UI加法。註冊爲新用戶。完成電子郵件驗證後,您將自動登錄到該網站。現在註銷並嘗試再次登錄。它給出了同樣的錯誤。

最後編輯:

的UI插件自帶仍然編碼密碼RegisterController。然而,內核附帶的更新的域類也是這樣做的,推薦的做法是控制器不應該這樣做。我註釋了一行代碼,現在編碼和登錄/註銷至少適用於基本情況。

+0

您是否在註銷後檢查了HSQLDB?用戶仍在桌上?聽起來像是一個持久性問題 – add9

+0

@imellan:是的,用戶在註銷後仍然在表中。事實上,您可以執行重置密碼(使用彈簧安全界面)並使用新密碼重新登錄。 –

+0

你在過程中的某個地方使用springSecurityService.encodePassword()嗎? – add9

回答

7

上有該教程

早期版本的插件並沒有包括在域類密碼加密邏輯警告,但它使代碼變得更乾淨。

我在猜測security-ui插件不知道這種變化,並將未加密的密碼與數據庫上的加密密碼進行比較。

+0

我懷疑這一點。請參閱我提到的其他場景。即使沒有UI增強,它也會發生。 –

+1

你是對的。 UI插件不會隨更改而更新。太棒了!我重新看了RegisterController,這是確切的問題!希望我早些時候聽過你的消息。謝謝:) –

+0

不客氣。我有一個與shiro插件及其文檔相似的問題。 –

3

l設法解決我的問題。問題是雙重加密。在41行用戶控制器中的spring security ui下,密碼被加密,然後又被域類加密,所以在登錄時它將比較雙重加密密碼和單個加密密碼。爲了解決這個問題,我剛剛在用戶控制器中的第41行註釋了密碼的加密

編輯:如果您在計算出編輯控制器的位置時遇到困難,可以找到下載的插件的源代碼在用戶家中的

/.grails/version/projects/projectname/plugins

目錄進行編輯(至少在Mac/Linux的,說不上來,你會發現它在Windows)。

+0

我不確定插件目錄中的潛水和編輯文件是最好的方法。我寧願使用s2ui腳本覆蓋受影響的類,並在重寫版本中進行必要的更改。 –