我已经存在用户密码等用户表。我目前正在迁移到FOSUserBundle实体。一切都好,这是迁移:
namespace Application\Migrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Auto-generated Migration: Please modify to your needs!
*/
class Version20140909172327 extends AbstractMigration implements ContainerAwareInterface
{
public function up(Schema $schema)
{
// this up() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('ALTER TABLE User ADD username VARCHAR(255) NOT NULL, ADD username_canonical VARCHAR(255) NOT NULL, ADD email_canonical VARCHAR(255) NOT NULL, ADD enabled TINYINT(1) NOT NULL, ADD salt VARCHAR(255) NOT NULL, ADD last_login DATETIME DEFAULT NULL, ADD locked TINYINT(1) NOT NULL, ADD expired TINYINT(1) NOT NULL, ADD expires_at DATETIME DEFAULT NULL, ADD confirmation_token VARCHAR(255) DEFAULT NULL, ADD password_requested_at DATETIME DEFAULT NULL, ADD roles LONGTEXT NOT NULL COMMENT \'(DC2Type:array)\', ADD credentials_expired TINYINT(1) NOT NULL, ADD credentials_expire_at DATETIME DEFAULT NULL, CHANGE password password VARCHAR(255) NOT NULL, CHANGE email email VARCHAR(255) NOT NULL');
$this->addSql('CREATE UNIQUE INDEX UNIQ_2DA1797792FC23A8 ON User (username_canonical)');
$this->addSql('CREATE UNIQUE INDEX UNIQ_2DA17977A0D96FBF ON User (email_canonical)');
$this->addSql('UPDATE User SET roles="a:0:{}", enabled=1');
}
public function down(Schema $schema)
{
// this down() migration is auto-generated, please modify it to your needs
$this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');
$this->addSql('DROP INDEX UNIQ_2DA1797792FC23A8 ON User');
$this->addSql('DROP INDEX UNIQ_2DA17977A0D96FBF ON User');
$this->addSql('ALTER TABLE User DROP username, DROP username_canonical, DROP email_canonical, DROP enabled, DROP salt, DROP last_login, DROP locked, DROP expired, DROP expires_at, DROP confirmation_token, DROP password_requested_at, DROP roles, DROP credentials_expired, DROP credentials_expire_at, CHANGE email email LONGTEXT DEFAULT NULL, CHANGE password password LONGTEXT DEFAULT NULL');
}
public function postUp(Schema $schema)
{
$em = $this->container->get('doctrine.orm.entity_manager');
$users = $em->getRepository('AcmeWhanToBundle:User')->findAll();
foreach($users as $user)
{
if($user->getAdmin()) {
$user->addRole('ROLE_ADMIN');
}
}
$em->flush();
}
/**
* @var Container
*/
private $container;
/**
* {@inheritDoc}
*/
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
}
但问题是当我尝试使用当前密码登录时。当前密码是使用sha1 algorythm创建的。这是我的security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: sha1
FOS\UserBundle\Model\UserInterface: sha1
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
我收到错误“凭据错误”。我错过了什么?