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 sur une déconnexion [2.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Problème sur une déconnexion
    Bonjour,

    J'ai un souci avec ma déconnexion, mon utilisateur ne se déconnecte pas justement. J'ai bien ma route d'écrit et le logout dans mon firewall. Symfony me crie pas d'erreur. Du coup je comprend pas trop.

    C'est un utilisateur écrit en dur avec un form de type http-basic.

    Si vous pouviez me donner quelques pistes sa serai sympa.

    Cordialement

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Le logout fonctionne avec le form_login.

    Pas avec le http_basic, du moins, il te sort bien, mais le jeton de cession est toujours présent, il recrée un token http_basic. Donc ça tourne en rond.

    Pour tuer le http_basic, je n'ai vu que fermer le navigateur et le ré ouvrir(pas seulement l'onglet, le jeton est toujours présent).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Merci stephan.78. Du coup j'ai refait un form login pour qu'il colle à ma partie que je veux sécuriser. et bizarrement à la déconnexion symfony m'envoie une erreur de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function getPath() on a non-object in C:\wamp\www\EspacePro\src\Spinnaker\AdminBundle\Controller\AdminController.php on line 126
    Du coup j'ai regardé dans mon controler et sa correspond à ma fonction télécharger un fichier qui fonctionne très bien d'ailleurs.

    Je comprend pas le lien entre ma déconnexion et la fonction.
    si vous aviez des indices je suis preneuse

    Cordialement

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Pour y voir plus clair, il faut mettre le code qui ne fonctionne pas.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    voici ma fonction de téléchargement et en rouge la ligne d'ou provient l'erreur:
    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
    public function telechargementAction($id)
    	{
    		$em = $this->getDoctrine()->getEntityManager();
    		$document = $em->getRepository('SpinnakerProBundle:Fichier')->find($id);
    		
    		$fichier = $document->getPath();
    		$chemin = $document->getWebPath();
    		
    		$response = new Response();
    		$response->setStatusCode(200);
    		$response->setContent(file_get_contents($chemin));
    		$response->headers->set('Content-type', 'application/force-download');
    		$response->headers->set('Content-Transfer-Encoding', 'binary');
    		$response->headers->set("Content-Length",filesize($chemin));
    		$response->headers->set('Content-disposition', 'attachment; filename='. $fichier);
    		$response->headers->set('Pragma', 'no-cache');
    		$response->headers->set('Expires', '0');
    		return ($response); 	 
    	}
    cordialement

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Peux tu mettre aussi le code l'entity que tu récupères. Le problème vient de cet objet qui ne contient pas de méthode getPath()

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    si justement j'ai la méthode getPath() dans mon entité fichier. sinon ma fonction de téléchargement fonctionnerais pas. C'est surtout que je vois pas la rapport entre cette fonction et l'authentification/déconnexion.

    la méthode getPath() dans mon entité fichier :
    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
    22
    23
    24
    25
    26
    27
    28
     
    /**
         * @var string $path
         *
         * @ORM\Column(name="path", type="string", length=255)
         */
        private $path;
    /**
         * Set path
         *
         * @param string $path
         * @return Fichier
         */
        public function setPath($path)
        {
            $this->path = $path;
     
            return $this;
        }
    /**
         * Get path
         *
         * @return string 
         */
        public function getPath()
        {
            return $this->path;
        }
    y a t-il un rapport dans le fait que mes entités sont dans un bundle "Probundle" et que je l'utilise aussi dans un autre bundle "AdminBundle"?

    [Edit]

    J'ai testé ma partie admin sans l'utilisation de "form_login" l'erreur n'apparait pas et j'accède à toute mes fonctions sans problème.
    Dès que je remet "form_login", l'erreur apparait. Pensez vous que l'erreur viendrais du faite que j'utilise un form-login pour chaque bundle et non un bundle "sécurité" pour gérer mes 2 autres bundles?


    Cordialement

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Citation Envoyé par LinC49 Voir le message
    voici ma fonction de téléchargement et en rouge la ligne d'ou provient l'erreur:
    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
    22
    23
    public function telechargementAction($id)
    	{
    		$em = $this->getDoctrine()->getEntityManager();
    		$document = $em->getRepository('SpinnakerProBundle:Fichier')->find($id);
    		    if (!$document) {
            throw $this->createNotFoundException(
                'No document found for id '.$id
            );
        }
    		$fichier = $document->getPath();
    		$chemin = $document->getWebPath();
    		
    		$response = new Response();
    		$response->setStatusCode(200);
    		$response->setContent(file_get_contents($chemin));
    		$response->headers->set('Content-type', 'application/force-download');
    		$response->headers->set('Content-Transfer-Encoding', 'binary');
    		$response->headers->set("Content-Length",filesize($chemin));
    		$response->headers->set('Content-disposition', 'attachment; filename='. $fichier);
    		$response->headers->set('Pragma', 'no-cache');
    		$response->headers->set('Expires', '0');
    		return ($response); 	 
    	}
    cordialement
    Peux tu ajouter le code en vert svp

    Post ton security.yml, ton action logout ainsi que le résultat de la commande
    php app/console router:debug --env=prod

    Pourquoi deux form_login ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    mon security.yml :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    security:
        encoders:
            Symfony\Component\Security\Core\User\User: plaintext
            Spinnaker\ProBundle\Entity\User:
                algorithm:        sha1
                encode_as_base64: false
                iterations:       1	
        providers:
            chain_provider:
                chain:
                    providers: [in_memory, user_db]
            in_memory:
                memory:
                    users:
                        admin: { password: monpass, roles: [ 'ROLE_ADMIN' ] }
            user_db:
                entity: { class: Spinnaker\ProBundle\Entity\User, property: username }		
        firewalls:
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
            login_E:
                pattern: ^/EspacePro/login$
                anonymous: ~
            espace:
                pattern: ^/EspacePro
                form_login:
                    provider: user_db
                    login_path:  /EspacePro/login
                    check_path:  /EspacePro/login_check
                logout:
                    path:   /EspacePro/logout
                    target: /EspacePro	
            login_A:
                pattern: ^/admin/login$
                anonymous: ~	
            Admin:
                pattern: ^/admin
                form_login:
                    provider: in_memory
                    login_path: /admin/login
                    check_path: /admin/login_check
                logout:
                    path: /admin/logout
                    target: /admin
    J'ai pas vraiment d'action logout, je fais juste un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="{{ path('_admin_logout') }}"> Déconnexion</a>
    dans mon twig.

    Avec le rajout du code en vert du coup c'est plus l'erreur qui apparait mais l'exception du code.

    Enfin pour répondre à ta question "pourquoi 2 form_login?" car je veux pas que sa pointe sur la même chose. C'est-à-dire que la 1ère pointera sur L'espace pro (= les clients) et l'autre seulement sur l'administration (= l'admin).

    Résultat de la commande : en pièce jointe

    Cordialement
    Images attachées Images attachées  

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonsoir,

    Pourquoi pas le login et logout, je pense que le problème est pris à l'envers. Tu peux gérer tout ça avec des ROLE différents en fonction de ce que tu veux afficher.

    Par contre je ne comprends pas le chain provider alors que dans les firewalls tu forces le user provider.

    Je pense que la version de Symfony est la version 2.0 non ?

    Quel est la route login ?

    Par contre je ne comprends pas ce que ton code vient faire dans l'action qui pose problème.

    Elle ne devrait pas être par la. Cherche dans des templates de logout admin si tu as pas un render de l'action avec un Id fantaisiste par sinon, il n'y a pas de raison de passé par la.

    Éventuellement dump la variable id dans l’exception pour voir ce qu'il y a dans cette variable.

    Post ton fichier routing éventuellement, peut être une boulette quelque part. Regarde dans le log de symfony2 si tu y a accès lors de l’exception voir par ou il passe. La je sèche.

    Tit réflexion, le problème se produit autant avec un logout admin et pro ou juste admin ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    le problème advient seulement pour l'admin, car pour l'espace pro tout fonctionne correctement.

    Le chain provider c'est dans la doc, lorsqu'on veut utiliser 2 types de récupération de user ( BDD, en dur..)

    J'avais pensé au RÔLE mais je savais pas comment indiquer un rôle commun à tout mes users (BDD).

    Je pense bien ce qu'il aime pas c'est mon histoire de 2 form_login...

    routing.yml :

    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
    22
    23
    24
    25
    26
    27
     
    spinnaker_pro:
        resource: "@SpinnakerProBundle/Resources/config/routing.yml"
        prefix:   /
    spinnaker_admin:
        resource: "@SpinnakerAdminBundle/Resources/config/routing.yml"
        prefix:   /
    security:
        resource: "@SpinnakerProBundle/Controller/SecurityController.php"
        type:     annotation
    _security_login:
        pattern:  /EspacePro/login
        defaults: { _controller: SpinnakerProBundle:Security:login }
    _security_check:
        pattern:  /EspacePro/login_check
    _security_logout:
        pattern:  /EspacePro/logout
    admin:
        resource: "@SpinnakerAdminBundle/Controller/SecurityController.php"
        type:     annotation
    _admin_login:
        pattern: /admin/login
        defaults: { _controller: SpinnakerAdminBundle:Security:login }
    _admin_check:
        pattern: /admin/login_check
    _admin_logout:
        pattern: /admin/logout
    Merci infiniment pour ta patience

    Cordialement

  12. #12
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Est ce que avec tu as accès à la debug bar quand l'exeption est levée ?

    Quelle est la version de Symfony ?

    Dans la debug bar tu dois voir quel route il a pris.

    Peux tu montrer l'action qui suit la route /admin/ ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Est ce que avec tu as accès à la debug bar quand l'exeption est levée ?
    Dans la debug bar tu dois voir quel route il a pris.

    Oui j'ai accès à la debug bar, et dès que je veux me loggé (url: /admin/login), l'exception apparait, et dans la debug bar, il m'indique
    erreur 404 :
    controller : AdminController::telechargementAction
    route : SpinnakerAdmin_telechargement
    has session : yes

    Je comprend pas pourquoi il s’acharne à prendre cette route. lol

    Quelle est la version de Symfony ? 2.1.3

    Peux tu montrer l'action qui suit la route /admin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function indexAction()
        {
    		// La requête affichant tout les fichiers 
    		$fichier = $this->getDoctrine()
    			->getRepository('SpinnakerProBundle:Fichier')->findAll();		
    		// Affichage de la page 
    		return $this->get('templating')->renderResponse('SpinnakerAdminBundle:Admin:index.html.twig',array(
    		 'fichier' => $fichier));	
        }

  14. #14
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    il faut que regarde dans ton routing.yml, je pense qu il doit y avoir une boulette. ou post le routing.yml et aussi le securitycontroler admin

    mais j avais compris que ct au logout le blem, la c sur la route login

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

Discussions similaires

  1. [Optimisation] Problème sur une requête UNION.
    Par françois62 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/06/2005, 16h08
  2. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55
  3. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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