Интерфейс UserInterface
Интерфейс UserInterface задаёт контракт
для класса пользователя в Symfony. Любой класс,
который представляет пользователя приложения,
должен реализовывать этот интерфейс. Он требует
три метода: getUserIdentifier,
getRoles и eraseCredentials.
Метод getUserIdentifier возвращает
уникальный идентификатор пользователя, метод
getRoles - массив ролей, а метод
eraseCredentials удаляет чувствительные
данные после аутентификации.
Синтаксис
<?php
namespace AppEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
class User implements UserInterface
{
public function getUserIdentifier(): string
{
return $this->email;
}
public function getRoles(): array
{
return $this->roles;
}
public function eraseCredentials(): void
{
}
}
?>
Пример
Давайте создадим класс пользователя, который
реализует интерфейс UserInterface:
<?php
namespace AppEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
class User implements UserInterface
{
private string $email = 'user';
private array $roles = ['ROLE_USER'];
public function getUserIdentifier(): string
{
return $this->email;
}
public function getRoles(): array
{
return $this->roles;
}
public function eraseCredentials(): void
{
}
}
?>
Теперь проверим работу методов через контроллер:
<?php
namespace AppController;
use AppEntityUser;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class UserController extends AbstractController
{
#[Route('/user', name: 'user_show')]
public function show(): Response
{
$user = new User();
echo $user->getUserIdentifier();
echo '<br>';
print_r($user->getRoles());
return new Response();
}
}
?>
Результат выполнения кода:
user
<br>
Array
(
[0] => ROLE_USER
)
Пример
Давайте добавим несколько ролей пользователю:
<?php
namespace AppEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
class User implements UserInterface
{
private string $email = 'abcde';
private array $roles = ['ROLE_USER', 'ROLE_ADMIN'];
public function getUserIdentifier(): string
{
return $this->email;
}
public function getRoles(): array
{
return $this->roles;
}
public function eraseCredentials(): void
{
}
}
?>
Результат выполнения метода getRoles:
["ROLE_USER", "ROLE_ADMIN"]
Пример
Давайте реализуем метод eraseCredentials
для очистки пароля после аутентификации:
<?php
namespace AppEntity;
use SymfonyComponentSecurityCoreUserUserInterface;
class User implements UserInterface
{
private string $email = 'abcde';
private array $roles = ['ROLE_USER'];
private ?string $plainPassword = 'hello';
public function getUserIdentifier(): string
{
return $this->email;
}
public function getRoles(): array
{
return $this->roles;
}
public function eraseCredentials(): void
{
$this->plainPassword = null;
}
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
}
?>
Результат выполнения кода после вызова
eraseCredentials:
null
Смотрите также
-
метод
getUserIdentifier,
который возвращает идентификатор пользователя -
метод
getRoles,
который возвращает роли пользователя -
метод
eraseCredentials,
который очищает чувствительные данные -
интерфейс
PasswordAuthenticatedUserInterface,
который добавляет работу с паролем