2013-03-30 138 views
3

Im使用grails進行Web開發和Spring安全性驗證和授權。更改用彈簧安全驗證舊密碼的密碼錶

我想製作一個簡單的表單讓用戶更改密碼。這是一個包含三個密碼字段的表單。第一個是爲當前(舊)密碼設定的。第二個和第三個是用於驗證的新密碼,以防止意外錯誤的輸入。

問題是,我不能找出正確的方法來驗證舊密碼對當前的一個。我想通過使用springSecurityService.encodePassword函數並比較哈希來手動完成它。但我不確定這是否是正確的做法。

此表僅適用於已登錄的用戶訪問。問計於密碼應更改密碼阻止攻擊者,如果他們以某種方式得到了會議的舉行(用戶忘記註銷例如)

有沒有一種彈簧安全的方式來做到這一點?

+1

使用'springSecurityService.encodePassword'看起來不錯 –

回答

3

在使用passwordEnconder的Spring Security Core文檔中有an example,但springSecurityService.encodePassword也沒問題。

+0

我測試了兩種方法,並且它們完美地工作。我堅持使用密碼編碼器,因爲我認爲這樣更乾淨。 – Sponiro

+2

看起來像列出的文檔鏈接不再有效,但我認爲這是等效頁面:http://grails-plugins.github.io/grails-spring-security-core/guide/passwords.html#locking – Michael

+2

@邁克爾,你提供的鏈接也是死的 – rahulserver

1

這就是我在Grails 2.3和spring-security-core-2.0-RC4中使用的。

def springSecurityService 
User activeUser = springSecurityService.currentUser  
def password_old ='password' 
if (!springSecurityService.passwordEncoder.isPasswordValid(activeUser.getPassword(), password_old, null)) { 
"password is incorrect do something" 

}else log.info "password is correct do something"