Как я могу получить доступ к текущему пользователю из AccessDeniedHandler в symfony 3.4? - PullRequest
0 голосов
/ 29 января 2020

Использование symfony 3.4 Я хочу использовать AccessDeniedHandler, как описано здесь . Как я могу получить доступ к текущему пользователю из этого AccessDeniedHandler?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Вы можете получить текущего пользователя, используя основной компонент безопасности.

В вашем классе AccessDeniedHandler:

use Symfony\Component\Security\Core\Security;

protected $security;

public function __construct(Security $security)
{
    $this->security = $security;  
}

public function doSomething()
{
    /** @var \App\Entity\User $user */
    $user = $this->security->getUser();
}
1 голос
/ 29 января 2020

Symfony предоставляет сервис, который позволяет вам получить зарегистрированного пользователя (если есть)

Просто адаптируйте конструктор вашего класса с помощью TokenStorageInterface

public function __construct(TokenStorageInterface $tokenStorage)
{
    $this->tokenStorage = $tokenStorage;
}

Вы можете получить доступ пользователю нравится следовать

if (null === $token = $this->tokenStorage->getToken()) {
    // No authentication token in the security context
}

$user = $token->getUser();

if (is_string($user)) {
    // getUser can return a string with "anon." if the firewall allow anonymous user
} elseif ($user instanceof UserInterface) {
    // You got your user :)
}
...