Лучший способ кодировать пароль пользователя в Symfony 3?

1

Я знаю, что могу использовать этот кодировщик:

$encoder = $this->container->get('security.password_encoder');
$encoded = $encoder->encodePassword($user, $plainPassword);

Но когда я должен его использовать? Я могу закодировать пароль перед вызовом метода setPassword(). Или я могу закодировать пароль в методе setPassword(). Или, может быть, я должен создать собственный тип данных доктрины, который будет кодировать пароль перед сохранением в базе данных? Или что-то другое? Какой вариант лучше?

Теги:

2 ответа

3
Лучший ответ

Если вы не используете какой-либо комплект для пользователей (например, FOSUserBundle), я бы предложил использовать preInsert события preInsert и preUpdate

Таким образом, вы можете централизовать свой код и быть уверенным, что каждый раз, когда пользователь "записывается" в db, ваша операция будет выполнена.

Пожалуйста, обратите внимание

Если $plainPassword не имеет значения в preUpdate, возможно, вам нужно выполнить некоторые действия и, в общем, я уверен, вам нужно реализовать некоторую логику, чтобы избежать кодирования уже закодированного пароля

0

Практика заключается в том, чтобы хранить пароли в БД в зашифрованном виде. Затем во время входа в систему получите пароль от пользователя, зашифруйте его еще раз, прочитайте зашифрованный пароль из БД, сравните два; pass/fail в зависимости от соответствия/несоответствия.

  • 0
    Я действительно считаю, что вы НЕ должны шифровать свои пароли, потому что это обратимая операция. Мешай это, чем оно не будет обратимым.
  • 0
    Да, я исправлюсь. Поток, который я описал выше, был для одностороннего хэширования, но я использовал слово шифрование.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню