Неопределенный метод isGranted в Symfony 4 - PullRequest
1 голос
/ 06 марта 2019

Я использую заявление из приложения Symfony2 в Symfony4:

$securityContext = $this->container->get('security.token_storage');         
if($securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ){
. . .
}

Я всегда получаю сообщение об ошибке:

Attempted to call an undefined method named "isGranted" of class "Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage

что мне не хватает?

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Symfony предоставляет вам несколько способов принудительной авторизации, включая […] прямое использование isGranted в службе security.authorization_checker.

source

Вам следует звонить isGranted в службу security.authorization_checker, а не security.token_storage.

0 голосов
/ 06 марта 2019

для SF4, согласно документам:

public function hello($name)
{
    $this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');

    // ...
}

Вы должны использовать сервис security.authorization_checker. И код выше такой же, как:

public function hello($name, AuthorizationCheckerInterface $authChecker)
{
    if (false === $authChecker->isGranted('ROLE_ADMIN')) {
        throw new AccessDeniedException('Unable to access this page!');
    }

    // ...
}

проверьте документы здесь https://symfony.com/doc/4.0/security.html#securing-controllers-and-other-code

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...