2017-01-16 5 views
0

Я просто случайно заметил, что с помощьюGrails 3 - springSecurity повторной аутентификации с паролем

springSecurityService.reauthenticate(userid, password) 

для аутентификации пользователя вручную (в контроллере) преуспевает, независимо от значения для password, т.е. правильный пароль неверный пароль, null пароль и т. д.

Я что-то упустил?
Объявление метода springSecurityService
void reauthenticate(String username, String password = null)
Так что сначала я был уверен, что проверка пароля была на месте.

Config

  • Grails 3.2.4
  • Spring Security Plugin (ядро) 3.1.1

ответ

0

Метод reauthenticate обновляет текущий контекст безопасности с экземпляром UserDetails найденного по электронной почте вы предоставляете метод reauthenticate. Он не выполняет никакой проверки, так как это внутренний вызов. Он также удаляет пользователя из кеша пользователя, чтобы принудительно обновить его при следующем входе в систему.

Итак, если вы не передадите параметр пароля, он будет использовать пароль из экземпляра UserDetails и установить контекст аутентификации с этими подробностями.

Посмотрите на код here

Я надеюсь, что это помогает.

+0

Yup, это имеет смысл, спасибо! По-видимому, я неправильно понял цель параметра 'password'. Для кого это интересно, я использовал 'org.springframework.security.crypto.password.PasswordEncoder.matches()' для проверки пароля отдельно. – ilPittiz