Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github
Normalmente, o mesmo codificador de senha é usado para todos os usuários configurando-o para aplicar a todas as instâncias de uma classe específica:
Outra opção é usar um codificador “nomeado” e então selecionar qual codificador pretende utilizar de forma dinâmica.
No exemplo anterior, foi definido o algoritmo sha512 para Acme\UserBundle\Entity\User. Isso pode ser seguro o suficiente para um usuário comum, mas e se você deseja que seus administradores tenham um algoritmo mais forte, por exemplo `` bcrypt``. Isso pode ser feito com codificadores nomeados:
Isso cria um codificador nomeado harsh. Para que uma instância User utilize ele, a classe deve implementar Symfony\Component\Security\Core\Encoder\EncoderAwareInterface. A interface requer um método - getEncoderName - que deve retornar o nome do codificador que será utilizado:
// src/Acme/UserBundle/Entity/User.php
namespace Acme\UserBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Encoder\EncoderAwareInterface;
class User implements UserInterface, EncoderAwareInterface
{
public function getEncoderName()
{
if ($this->isAdmin()) {
return 'harsh';
}
return null; // use the default encoder
}
}