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

Метод getPassword

Метод getPassword принадлежит интерфейсу PasswordAuthenticatedUserInterface. Он возвращает хешированный пароль пользователя, который Symfony использует для проверки учётных данных при входе. Метод не принимает параметров и возвращает строку или null, если пароль не задан.

Синтаксис

public function getPassword(): ?string

Пример

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

<?php namespace AppEntity; use DoctrineORMMapping as ORM; use SymfonyComponentSecurityCoreUserPasswordAuthenticatedUserInterface; use SymfonyComponentSecurityCoreUserUserInterface; #[ORMEntity(repositoryClass: UserRepository::class)] class User implements UserInterface, PasswordAuthenticatedUserInterface { #[ORMId] #[ORMGeneratedValue] #[ORMColumn(type: 'integer')] private ?int $id = null; #[ORMColumn(type: 'string', length: 180, unique: true)] private string $email = ''; #[ORMColumn(type: 'string')] private string $password = ''; public function getId(): ?int { return $this->id; } public function getEmail(): string { return $this->email; } public function setEmail(string $email): self { $this->email = $email; return $this; } public function getUserIdentifier(): string { return $this->email; } public function getPassword(): ?string { return $this->password; } public function setPassword(string $password): self { $this->password = $password; return $this; } public function getRoles(): array { return ['ROLE_USER']; } public function eraseCredentials(): void { } } ?>

Пример

Давайте создадим пользователя, захешируем пароль и проверим его через метод getPassword:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentPasswordHasherUserPasswordHasherInterface; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user/create', name: 'user_create')] public function create(UserPasswordHasherInterface $hasher): Response { $user = new User(); $user->setEmail('user'); $hashed = $hasher->hashPassword($user, 'abcde'); $user->setPassword($hashed); return new Response($user->getPassword()); } } ?>

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

"$2y$13$abcdefghijklmnopqrstuv"

Пример

Давайте проверим, что возвращённый методом getPassword хеш соответствует исходному паролю:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentPasswordHasherUserPasswordHasherInterface; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user/verify', name: 'user_verify')] public function verify(UserPasswordHasherInterface $hasher): Response { $user = new User(); $user->setEmail('user'); $hashed = $hasher->hashPassword($user, 'abcde'); $user->setPassword($hashed); $valid = $hasher->isPasswordValid($user, 'abcde'); return new Response($valid ? 'hello' : 'user'); } } ?>

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

"hello"

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

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