2017-01-16 101 views
0

我只是碰巧注意到,使用Grails的3 - springSecurity重新驗證,密碼

springSecurityService.reauthenticate(userid, password) 

手動用戶認證(在控制器)成功無論價值password,即正確的密碼,密碼錯誤,空密碼等。

我錯過了什麼嗎?
springSecurityService的方法聲明是
void reauthenticate(String username, String password = null)
所以起初我非常確信密碼檢查已到位。

配置

  • 的Grails 3.2.4
  • 春季安全插件(核心)3.1.1

回答

0

reauthenticate方法更新與實例的UserDetails當前安全上下文通過電子郵件發現你提供給reauthenticate的方法。由於它是內部電話,因此不執行任何驗證。它還會將用戶從用戶緩存中移除,以在下次登錄時強制刷新。

因此,如果您不傳遞密碼參數,它將使用UserDetails實例中的密碼並使用這些詳細信息設置認證上下文。

看一看代碼here

我希望這有助於。

+0

是的,這很合理,謝謝!顯然我誤解了'password'參數的用途。 對於誰有興趣,我使用'org.springframework.security.crypto.password.PasswordEncoder.matches()'分別驗證密碼。 – ilPittiz