2010-11-10 35 views
0

pour mettre en œuvre les informations d'identification dois-je mettre en œuvre une fonction preExecute comme ceci:Ai-je besoin d'une fonction preExecute() dans la classe action pour vérifier les informations d'identification appropriées dans Symfony?

public function preExecute() { 
     $this->configuration = new jobGeneratorConfiguration(); 
     if (!$this->getUser()->hasCredential(
         $this->configuration->getCredentials($this->getActionName()) 

      )); 
    } 

Ou est-il suffisant pour avoir défini dans le module/config/security.yml comme ceci:

all: 
    is_secure: true 
    credentials: [ admin ] 

Cependant, je ne suis pas capable de le faire en utilisant security.yml seulement! Je pensais que preExecute n'est pas nécessaire et symfony le gère automatiquement en chargeant la définition security.yml! S'il vous plaît aider!

J'utilise sfDoctrineGuardPlugin et plug-in sfForkedDoctrineApply ..

+0

Juste pour vérifier, avez-vous essayé de faire './symfony cc'? – lonesomeday

+1

@lonesomeday: en fait, j'ai trouvé le problème tout à l'heure, c'était le champ is_super_admin dans la table sf_guard_user qui a été mis à 1 pour tous mes utilisateurs factices dans fixture.yml :)! C'est pourquoi tous les utilisateurs ont accès à tous les modules en contournant les informations d'identification! – med

Répondre

1

Il n'y a pas besoin pour vous de faire une pré-execute pour cela.

Le fichier security.yml est suffisant pour empêcher les personnes sans les informations d'identification appropriées d'accéder au module ou à l'action spécifié.

+0

Vous avez raison! Merci pour votre réponse. Le problème était que le champ is_admin était défini sur 1 dans sfGuardUser et que l'utilisateur pouvait donc contourner toutes les informations d'identification :) – med