Перенос устаревших пользователей на symfony2

Я перехожу от expressionengine к symfony2, и я ищу лучший способ переноса пользовательских паролей. Цель состоит в том, чтобы позволить устаревшим пользователям войти в систему с существующими учетными данными, а пароли для новых пользователей создаются по умолчанию.

Я посмотрел на пользовательских поставщиков проверки подлинности и пользовательских поставщиков пользователей и подумал о том, чтобы создать или не создать отдельный объект для устаревших пользователей, но я не знаю, какой был бы лучший способ / дизайн для достижения вышеуказанного.

FYI:

  • Насколько я вижу, expressionengine просто шифрует пароль, используя sha1, и все.
  • В настоящее время я использую FOSUserBundle.

Может ли кто-нибудь посоветовать мне решение?

Related of "Перенос устаревших пользователей на symfony2"

Догадаться!

Создайте собственный кодер и используйте пакет FOSAdvancedEncoder, чтобы выбрать соответствующий кодировщик.

1. Создайте кодировщик

  <?php namespace Acme\MyBundle\Security\Encoder; use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface; class LegacyEncoder implements PasswordEncoderInterface { public function encodePassword($raw, $salt) { // Your Custom encoder logic return $something } public function isPasswordValid($encoded, $raw, $salt) { return $encoded === $this->encodePassword($raw, $salt); } } 

2. Зарегистрируйте свой кодер как услугу

 services: acme.legacy_encoder: class: Acme\MyBundle\Security\Encoder\LegacyEncoder 

3. Установите FOSAdvancedEncoderBundle

Смотрите здесь: https://github.com/friendsofsymfony/FOSAdvancedEncoderBundle/blob/master/Resources/doc/index.md

4. Настройте свои кодеры

В app/config.yml :

 fos_advanced_encoder: encoders: FOS\UserBundle\Model\UserInterface: sha512 legacy_encoder: id: acme.legacy_encoder 

5. Внедрите интерфейс, поддерживающий кодирование, в свой пользовательский класс

 use FOS\AdvancedEncoderBundle\Security\Encoder\EncoderAwareInterface; use FOS\UserBundle\Entity\User as BaseUser; class User extends BaseUser implements EncoderAwareInterface { ... public function getEncoderName() { if($this->islegacy()) { return "legacy_encoder"; } return NULL; } } 

Не забудьте добавить логическое поле для администрирования, если пользователь является устаревшим пользователем или нет.

Вот и все.

Может быть, поток об экспорте членов из ExpressionEngine в WordPress поможет вам.

Я не вижу никаких трудностей, кроме экспорта результатов из пользовательского запроса в структуру FOSUserBundle.

Важные вещи для запоминания:

  • Как замечает Дерек Хог в этой теме, пользователям, скорее всего, придется сбросить свои пароли
  • Вам нужно будет понять обе структуры действительно хорошо , чтобы правильно импортировать данные