2017-01-16 6 views
0

Ich habe das gerade passiert ist zu bemerken, mitGrails 3 - springSecurity reauthenticate mit Passwort

springSecurityService.reauthenticate(userid, password) 

für eine manuelle Benutzerauthentifizierung (in einem Controller) gelingt es, unabhängig vom Wert für password, dh korrektes Passwort, falsches Passwort, Null-Passwort usw.

Fehle ich etwas?
Die Erklärung der Methode springSecurityService der ist
void reauthenticate(String username, String password = null)
so Zuerst war ich ziemlich zuversichtlich, dass ein Passwort der Check-in war.

Config

  • Grails 3.2.4
  • Spring Security Plugin (Kern) 3.1.1

Antwort

0

Die reauthenticate Methode aktualisiert den aktuellen Sicherheitskontext mit Userdetails Instanz von der E-Mail gefunden Sie bieten die reauthenticate Methode. Es führt keine Überprüfung durch, da es sich um einen internen Anruf handelt. Außerdem wird der Benutzer aus dem Benutzercache entfernt, um bei der nächsten Anmeldung eine Aktualisierung zu erzwingen.

Wenn Sie also den Parameter password nicht übergeben, wird das Kennwort der UserDetails-Instanz verwendet und der Authentifizierungskontext mit diesen Details festgelegt.

Werfen Sie einen Blick auf den Code here

Ich hoffe, das hilft.

+0

Yup, das macht Sinn, danke! Anscheinend habe ich den Zweck des Parameters "password" missverstanden. Für wer interessiert ist, habe ich 'org.springframework.security.crypto.password.PasswordEncoder.matches()' verwendet, um das Passwort separat zu überprüfen. – ilPittiz