Подтвердить что ты не робот

Symfony2 - определить, находится ли пользователь в защищенном брандмауэре

Я пытаюсь выяснить, находится ли пользователь в защищенном брандмауэре.

security.yml:

firewalls:
    non_secure_area:
        pattern: ^/
        anonymous: true
    secure_area:
        pattern: ^/admin
        form_login:
            #etc.
        logout:
            #etc.

Поэтому мне нужно знать, находится ли пользователь в защищенной части сайта secure.area.

Я использовал это, но, конечно, это только говорит мне, что кто-то "вошел в систему" ​​и на странице HTTPS. Должен быть лучший способ:

if( $request->isSecure() && $securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ) {

} 
4b9b3361

Ответ 1

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

$token = $securityContext->getToken();
$providerKey = $token->getProviderKey(); // secured_area

Не забудьте проверить, существует ли токен, а не экземпляр AnonymousToken

Ответ 2

Если вы находитесь в чем-то, что есть ContainerAware, вы можете получить Request, а затем URI [посмотреть документы]:

$request = $this->container->get('request');
$uri = $request->getUri();

Затем вы можете проверить такую ​​строку на /admin, как хотите.