Я новичок в Symfony2, и у меня, возможно, есть простой вопрос о кодировании моих паролей пользователей в моей БД.
Я бы хотел закодировать и сохранить в БД пароль моего пользователя таким образом:
encoded_password = salt . sha1 ( salt . raw_password )
Я нашел различные кодировщики (sha1, sha512, обычный текст), я видел, что с открытым текстом у меня есть в моей базе данных raw_password {salt}, но мне все еще не нравится метод signin / login / getSalt () в Symfony2.
Если бы вы могли мне помочь (пожалуйста, предположим, что я не хочу использовать существующий пакет для UserManagement, я хотел бы сделать свой собственный), это было бы УДИВИТЕЛЬНО!
Спасибо
EDIT:
Я мог бы сделать это в моем signinAction ():
$salt = substr(md5(time()),0,10);
$pwd = $encoder->encodePassword($user->getPassword(), $salt);
$user->setPassword($salt.$pwd);
Я мог бы сделать это в моем getSalt ():
return substr($this->password,0,10);
Но в настоящее время у меня есть только это в моем loginAction (): (см. Здесь: http://symfony.com/doc/current/book/security.html)
// src/Acme/SecurityBundle/Controller/Main;
namespace Acme\SecurityBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
class SecurityController extends Controller
{
public function loginAction()
{
$request = $this->getRequest();
$session = $request->getSession();
// get the login error if there is one
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render('AcmeSecurityBundle:Security:login.html.twig', array(
// last username entered by the user
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
}
}
Как я могу сказать Symfony2 проверять пароль во время входа в систему так, как мне нужно? (выполняется кодирование (пароль, соль), а не соль. код (пароль, соль)