11

我试图找出用户是否在安全防火墙内。

安全性.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') ) {

} 
4

2 回答 2

10

您可以在其上获取安全令牌和访问提供者密钥。

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

不要忘记检查令牌是否存在并且它不是AnonymousToken

于 2013-07-26T20:57:10.077 回答
0

如果你喜欢的是ContainerAware,你可能会得到Request,然后是 URI [参见文档]:

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

然后,您可以根据需要检查此类字符串/admin

于 2013-07-26T17:38:16.243 回答