Я использую Symfony Security с пользовательским поставщиком в моей системе. Он обеспечивает пользователей через веб-службу.
Я настраиваю провайдера в соответствии с этим руководством (http://symfony.com/doc/current/cookbook/security/custom_provider.html).Symfony Security/Пользовательский поставщик: как получить пароль для входа в пользовательский поставщик?
Вот функция, которая проверяет пользователя:
public function loadUserByUsername($username)
{
$userData = webServiceCheckUser($username);
// return an array whit user credentials
if ($userData) {
$password = $userData['password'];
$salt = $userData['salt'];
$roles = $userData['roles'];
$user = new WebserviceUser($username, $password, $salt, $roles);
return $user;
}
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
}
Это прекрасно работает, функция webServiceCheckUser()
вызова веб-службы с именем пользователя, а затем он возвращает массив с данными пользователя. Но теперь мне нужно проверить пользователя через другую веб-службу, для которой требуется имя пользователя и зашифрованный пароль пользователя для его аутентификации. У меня есть функция, которая шифрует пароль обычного текста, например, веб-службу ждет, но я не могу получить пароль, который был введен пользователем в форме входа в пользовательский класс поставщика. Это нормально, если я могу получить пароль, уже зашифрованный. Либо один решает проблему.
Есть так или иначе, чтобы сделать это?
Думайте, что вам нужно написать [поставщик собственной проверки подлинности] (http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html) –