РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
582 of 1361 menu

Метод hashPassword

Метод hashPassword класса UserPasswordHasher принимает объект пользователя и пароль в открытом виде, а возвращает готовый хеш, который можно сохранить в базе данных. Первым параметром передаётся объект пользователя, реализующий PasswordAuthenticatedUserInterface, вторым - строка пароля. Метод сам подбирает соль и алгоритм хеширования из конфигурации security.yaml, поэтому вручную вызывать password_hash уже не нужно.

Синтаксис

public function hashPassword( PasswordAuthenticatedUserInterface $user, string $plainPassword ): string

Пример

Давайте захешируем пароль 'abcde' для пользователя:

<?php namespace App\Controller; use App\Entity\User; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class UserController extends AbstractController { public function hash(UserPasswordHasherInterface $hasher): Response { $user = new User(); $hashed = $hasher->hashPassword($user, 'abcde'); return new Response($hashed); } } ?>

Результат выполнения кода:

$2y$13$Q3n7lC0kF2mZ9pXrT4vVwOaBcDeFgHiJkLmNoPqRsTuVwXyZ01234

Пример

Давайте сохраним хеш пароля в сущности пользователя:

<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserInterface; #[ORM\Entity] class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private string $username = ''; #[ORM\Column(length: 255)] private string $password = ''; public function getId(): ?int { return $this->id; } public function getUsername(): string { return $this->username; } public function setUsername(string $username): static { $this->username = $username; return $this; } public function getPassword(): string { return $this->password; } public function setPassword(string $password): static { $this->password = $password; return $this; } public function getRoles(): array { return ['ROLE_USER']; } public function eraseCredentials(): void { } public function getUserIdentifier(): string { return $this->username; } } ?>

Пример

Давайте захешируем пароль и присвоим его пользователю:

<?php namespace App\Controller; use App\Entity\User; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class UserController extends AbstractController { public function register( UserPasswordHasherInterface $hasher, EntityManagerInterface $em ): Response { $user = new User(); $user->setUsername('user'); $hashed = $hasher->hashPassword($user, 'abcde'); $user->setPassword($hashed); $em->persist($user); $em->flush(); return new Response('user saved'); } } ?>

Результат выполнения кода:

"user saved"

Смотрите также

  • класс UserPasswordHasher,
    который хеширует и проверяет пароли пользователей
  • метод isPasswordValid,
    который проверяет соответствие пароля хешу
  • метод needsRehash,
    который проверяет необходимость перехеширования пароля
  • интерфейс PasswordAuthenticatedUserInterface,
    который реализует пользователь с паролем
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить