Ответ 1
Вы можете получить маркер безопасности и ключ доступа к нему.
$token = $securityContext->getToken();
$providerKey = $token->getProviderKey(); // secured_area
Не забудьте проверить, существует ли токен, а не экземпляр AnonymousToken
Я пытаюсь выяснить, находится ли пользователь в защищенном брандмауэре.
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') ) {
}
Вы можете получить маркер безопасности и ключ доступа к нему.
$token = $securityContext->getToken();
$providerKey = $token->getProviderKey(); // secured_area
Не забудьте проверить, существует ли токен, а не экземпляр AnonymousToken
Если вы находитесь в чем-то, что есть ContainerAware
, вы можете получить Request
, а затем URI [посмотреть документы]:
$request = $this->container->get('request');
$uri = $request->getUri();
Затем вы можете проверить такую строку на /admin
, как хотите.