2010-10-12 89 views
2

我正在寫一個模塊來強制密碼已過期的用戶更新其密碼。這個應用程序使用acegi security plugin。在檢測到過期憑證後,用戶將被重定向到「插入新密碼」頁面。但是,提交表單時,會執行auth操作,而不是所需的操作(renewPassword)。Grails + Acegi:如何處理密碼更新?記錄與未記錄的用戶

我懷疑這是因爲用戶沒有登錄,所以我想知道是否存在更好的方法。

例如,讓用戶登錄,但禁用其帳戶直到他/她刷新其密碼。

這是正確的路嗎?任何人都可以分享他/她的經驗嗎?

更新

試想想它,因爲acegi是做所有的「檢查過期證書」的工作,我將無法登錄的用戶,然後改變它,因爲我在認證得到一個CredentialsExpiredException失敗。那麼有沒有辦法做到這一點?

在此先感謝

+0

是否有可能觸發已到期的異常,並根據此操作(在這種情況下重定向或執行renewPassword)? – onaclov2000 2010-10-12 13:04:57

回答

0

終於解決了它的「簡單,不是程序化的,conf 。文件「的方式。

SecurityConfig.groovy我增加了一個入口到requestMapString

/login/renewpassword = IS_AUTHENTICATED_ANONYMOUSLY 

通過這種方式,可以在不登錄的用戶執行的loginControllerrenewpassword行動。

謝謝大家對你的時間。

1

我建議允許登錄,但在你的代碼中設置一個重定向標誌,他們推到密碼更改頁面,所以即使他們試圖改變到另一個位置的網站,它將他們推回密碼更改頁面。 (我不知道如何用這種語言編寫代碼,因爲我從來沒有用過它,但是我建議解決看似限制)