IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

problème scrf_token required [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut problème scrf_token required
    Bonjour,
    J'ai un problème avec mon formulaire de connexion qui marche parfaitement bien sans validator mais qui me dit "scrf_token required" lorsque je met mes validators. Je n'ai pas d'erreur mais je reste bloqué sur la page de connexion. voici les morceaux de code qui peuvent être intéressant :
    Dans le connexionForm.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class connexionForm extends sfForm
    {
    	public function configure()
    	{
    		$this->setWidgets(array(
    			    'login' => new sfWidgetFormInputText(),
    			    'mdp' => new sfWidgetFormInputPassword()
    		    )); 
    			$this->widgetSchema->setLabels(array(
    				'login' =>'login',
    				'mdp' =>' mot de passe'
    				));		
     
    		$this->setValidators(array(
    		'login' => new sfValidatorString(array('required' => true)),
    		'mdp' => new sfValidatorString(array('required' => true)),
    		));
    	$this->widgetSchema->setNameFormat('connexion[%s]');
    	$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
    	}
    }
    Dans l'action.class.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $this->connexionForm = new connexionForm();
     
      if($request->isMethod('post'))
    	{
    	$this->connexionForm->bind($request->getParameter('connexion'));
    	if($this->connexionForm->isValid()){
    Dans le template indexSuccess.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form action="<?php echo url_for('Connexion/index');?>" method="POST" enctype="multipart/form-data">
    <table>
    <?php echo $connexionForm['login']->renderError() ?>
    <p><?php echo $connexionForm['login']->renderLabel() ?><?php echo $connexionForm['login'] ?></p>
    <?php echo $connexionForm['mdp']->renderError() ?>
    <p><?php echo $connexionForm['mdp']->renderLabel() ?><?php echo $connexionForm['mdp'] ?></p>
    <?php echo $connexionForm->renderHiddenFields() ?>
    	<tr> 
    		<td colspan="2"> 
    			<input type="submit" value="Connexion" /> 
    		</td>
    	</tr>
    </table>
    </form>
    Voila pour le code.
    Comme vous pouvez le voir j'ai essayé de m'inspiré de la conversation qui date de 2009 sur le même sujet mais sans succès...
    Merci d’avance pour le temps passer sur mon problème.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Dommage, je n'aurais pas droits à un merci

    C'est une erreur classique. Ton formulaire attend un CSRF_Token qui est obligatoire (required) mais qui ne lui parvient pas. C'est un système de sécurité embarqué par défaut dans les forms et qui permet d'éviter qu'un form reviennent rempli (par un pirate) sana qu'il lui ait été envoyé auparavant.

    Le problème chez toi est qu'il attend un champ avec ce token et qu'il ne le voit pas arriver. Il considère donc que tu es un pirate

    Le jeton est ajouter automatiquement dans les widget dans un champ caché et un validateur est ajouté de la même manière.

    Bon, mais pourquoi cela ne marche pas ? Dans ton formulaire, tu ne génères pas les champs caché dans ton form, hors le token est dans un champs caché. Rajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $connexionForm->renderHiddenFields() ?>
    dans le form et tous va rentrer dans l'ordre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut
    Bonjour,
    Merci pour la rapidité de ta réponse.
    Ce que je vais dire est surement bête mais il me semble que je l'ai mis justement.
    Dans mon code dans le template "indexSuccess.php" à la ligne 6 j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $connexionForm->renderHiddenFields() ?>
    Je ne le met peut être pas au bon endroit ?...
    Deplus dans la barre de débug je n'est plus de "required" devant le "_scrf_token". N'est il pas possible que le token passe correctement mais qu'il y est un problème dans le action.class.php avec le "if"??
    cordialement

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Ce que tu dis me fait baigner dans un océan de perplexité...

    Questions 1 : As-tu bien dans ton html généré le hiden du csrf ?

    Il semblerait que, dans ton template, tu n'affiches pas les erreurs générales.

    Si tu n'as plus de message d'erreur c'est peut-être parce qu'il n'y en a plus ?

    A priori, tu laisses entendre que cela ne marche toujours pas, mais qu'est-ce qui ne marche pas maintenant ?

    Tu parles d'un if qui serait source de problème, hors il y a deux if, très classiques et il manque la fin du code, que je remplis par les fermetures d'usage. Il manque, peut-être une redirection vers un autre écran.

    Pourrais-tu être plus explicite sur ce qui ne fonctionne pas ?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Par défaut
    Désolé pour le manque de précision.
    J'ai réussi à résoudre mon problème qui était en réalité que j'avais oublié de modifier tout les getParameter dans mon action.class.php. Les vérifications avec les données de la base de données ne se faisaient donc pas et forcément la redirection vers le menu utilisateur non plus... Le scrf_token lui passait parfaitement bien.
    Merci pour l'aide apporté et la rapidité de tes réponses.
    cordialement.

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    On est passé d'un truc ou tout marchait sauf le token à un ou rien ne marchait sauf le token

    Vite du paracetamol, je glisse...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec require()
    Par LFC dans le forum Langage
    Réponses: 1
    Dernier message: 08/12/2007, 18h37
  2. [DEV]Problème WebPart-Required Field Validator
    Par voschielle dans le forum SharePoint
    Réponses: 4
    Dernier message: 05/10/2007, 19h16
  3. Problème de Require
    Par Luciefer dans le forum Langage
    Réponses: 6
    Dernier message: 11/07/2007, 21h52
  4. Validator:Problème de required pour un select
    Par lili2704 dans le forum Struts 1
    Réponses: 4
    Dernier message: 02/07/2007, 13h52
  5. [Système] problème avec require
    Par pas30 dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 07h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo