2010-10-02 4 views
1

Comment vérifier si l'action que j'appelle a été sécurisée dans security.yml?PHP Symfony - Inside Filtre, vérifiez si l'action est sécurisée?

security.yml

myAction: 
    is_secure: false 

filter.yml

myFilter: 
    class: myFilter 

maintenant à l'intérieur myFilter je veux vérifier si l'action a été fixé ou non.

class myFilter extends sfFilter 
{ 
    public function execute($filterChain) 
    { 
    if ($this->getContext()->is_secure === false) { 
     $filterChain->execute(); 
    } 
    // ... 
    } 
} 

Répondre

2
[email protected] :) ~/source/symfony/1.4 > ack "public function isSecure" --type="php" 
lib/request/sfWebRequest.class.php 
545: public function isSecure() 

lib/action/sfAction.class.php 
407: public function isSecure() 

test/unit/helper/AssetHelperTest.php 
29: public function isSecure() 

test/unit/helper/UrlHelperTest.php 
30: public function isSecure() 
[email protected] :(~/source/symfony/1.4 > ack "public function getAction\(" --type="php" 
lib/controller/sfController.class.php 
258: public function getAction($moduleName, $actionName) 
[email protected] :) ~/source/symfony/1.4 > ack "public function getController\(" --type="php" 
lib/util/sfContext.class.php 
243: public function getController(

)

Ce qui signifie que $this->getContext()->getController()->getAction()->isSecure() devrait le faire.

+1

Je ne trouve dans l'intervalle: $ this-> context-> getController() -> getActionStack() -> getLastEntry() -> getActionInstance() -> getSecurityValue ('is_secure'); –

+0

J'essayais d'obtenir cette valeur dans un template d'application et la réponse @tilman trouvée fonctionnait aussi pour moi: $ sf_context-> getController() -> getActionStack() -> getLastEntry() -> getActionInstance() -> getSecurityValue (' is_secure '); – jah

2

La bonne façon de gérer cela est de définir le type de votre filtre de sécurité:

myFilter: 
    class: myFilter 
    param: 
    type: security 

Votre filtre ne sera exécuté sur sécurisé (is_secure: true) actions. Jetez un coup d'œil au code source de sfFilterConfigHandler.class.php pour plus d'informations.