New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connnexion en GET cassée #700

Closed
Vincent14 opened this Issue Nov 8, 2014 · 38 comments

Comments

Projects
None yet
5 participants
@Vincent14
Copy link

Vincent14 commented Nov 8, 2014

En 0.8.1, j'utilise l'accès via l'URL /i/?a=formLogin&u=login&p=password et ça ne marche plus :'(

@aledeg

This comment has been minimized.

Copy link
Contributor

aledeg commented Nov 8, 2014

Je viens de faire un test en version 0.8.1 avec le type d'accès que tu mentionnes et je n'ai aucun problème pour le faire fonctionner. As tu un peu plus d'informations pour essayer de reproduire ce problème?

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Nov 8, 2014

J'ai un inscrit en plus du compte initial (multi utilisateuurs)

@aledeg

This comment has been minimized.

Copy link
Contributor

aledeg commented Nov 8, 2014

Je viens de me créer un nouvel utilisateur et je ça fonctionne correctement. J'ai testé avec mon utilisateur par défaut ainsi qu'avec mon nouvel utilisateur, j'arrive à me connecter avec les deux.
As tu d'autres informations?

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Nov 8, 2014

Mh non je ne vois vraiment pas, le mot de passe n'a même pas de caractères spéciaux =( Je me connecte sans problème en POST. Je te retourne la question, testes tu bien sans le moindre cookie ? :D

Edit : mon colloc rencontre le même problème sur son téléphone Android

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Nov 8, 2014

j'ai simplement supprimé tous les répertoires sauf /data et copié les nouveaux dossiers, sauf data, dans mon install

edit : j'ai essayé de lire le code mais heu... sans être initié je suis totalement perdu =X j'ai tenté une recherche sur $_GET['u'] dans le projet et pas mal de choses ont été déplacées depuis la dernière fois que j'avais regardé l'implémentation à ce sujet

edit 2 ce matin : pourrait-on voir pour poser des loggers ? ou dois-je passer en 0.9 ?

@marienfressinaud marienfressinaud added this to the 0.10-dev milestone Dec 9, 2014

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Dec 14, 2014

Je confirme que j'ai pu reproduire la problème tout à l'heure sur la démo. Par contre là je viens de réessayer et ça remarche. Je me pencherai dessus dès que j'ai le temps (là je suis en plein déménagement :p)

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Dec 30, 2014

Moi j'ai le problème systématiquement, je peux aider peut être ? (dit moi quelle ligne placer des logguer et comment on les fait et je te poste les résultats :) )

@marienfressinaud marienfressinaud referenced this issue Dec 30, 2014

Closed

[Meta-ticket] Release of version 1.0 #733

10 of 11 tasks complete
@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Dec 30, 2014

Ok on va faire comme ça. Dans un premier temps assure-toi que, dans le fichier ./data/config.php, environment soit à development au lieu de production.

Ensuite, dans le fichier ./app/Controllers/authController.php, ajoute (attention, les lignes vont changer lorsque tu en ajouteras ; je me base sur les lignes sans log) :

  • Ligne 78 : Minz_Log::debug('Entrée dans loginAction');
  • Ligne 116 : Minz_Log::debug('Entrée dans formLoginAction');
  • Entre 157 et 158 : Minz_Log::debug('Entrée dans le système unsafeAutoLogin');
  • Entre 179 et 180 : Minz_Log::debug('Vérification mot de passe : ' . print_r($ok, true));

Tu n'as plus qu'à essayer de te déconnecter avec l'url http://truc.muche?c=auth&a=login&u=alice&p=1234. Normalement pour toi ça ne marche pas donc tu vas voir tes logs et tu me dis ce que tu vois apparaître :)

Avec ça on devrait en savoir un peu plus déjà...

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Dec 31, 2014

Je n'ai pas de authController

J'ai :
configureController.php indexController.php
entryController.php javascriptController.php
errorController.php statsController.php
feedController.php updateController.php
importExportController.php usersController.php

Je suis en version 0.8.1, si je tente de mettre à jour, ça dit " Arf ! Aucune mise à jour à appliquer "

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Dec 31, 2014

Tu es sur la version stable, c'est normal. Pour passer sur la bêta il faut refaire une installation. Je te conseille de prendre la 0.9.1 qui est identique à la 0.8.1 comme ça tu peux conserver le répertoire ./data. Ensuite tu pourras mettre à jour automatiquement en 0.9.3

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 3, 2015

J'ai posé le log de la ligne 158 à la ligne 161 (il y avait une ligne vide)

[Sat, 03 Jan 2015 16:35:21 +0100] [debug] --- Entrée dans loginAction
[Sat, 03 Jan 2015 16:35:21 +0100] [debug] --- Entrée dans formLoginAction
[Sat, 03 Jan 2015 16:35:21 +0100] [debug] --- Entrée dans le système unsafeAutoLogin
[Sat, 03 Jan 2015 16:35:21 +0100] [debug] --- Vérification mot de passe : 1

Edit : le login est réparé sous Firefox desktop mais toujours cassé sur mobile ainsi que dans Chromium desktop

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 3, 2015

Ok donc tout ce qui est vérification est ok. Le problème vient plus probablement du giveAccess après. Je regarderai ça plus tard.

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 4, 2015

OK, de toute façon cet aprem ça marche plus non plus sous Firefox Desktop -_-"

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 6, 2015

Il est possible que j'ai détecté le bug. Je vais le corriger dans la branche sur laquelle je bosse actuellement car j'y ai changé tant de chose que le merge risque d'être pénible. J'espère la merger d'ici demain ou après-demain ;)

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 6, 2015

Je me suis peut-être fourvoyé. M'enfin on verra ;).

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 6, 2015

I notice that :)

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 8, 2015

S'il t'est possible de tester la version de dev, possible que le bug soit désormais corrigé mais je ne peux pas en être certain…

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 8, 2015

Je suis en 0.9.3, je n'ai pas de MAJ proposée, je passe par une réinstall comme la dernière fois ? :)

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 8, 2015

C'est l'idée ^^ Ça m'embête de te demander ça mais vu que tu es le seul à reproduire le bug facilement, j'ai pas le choix ;)

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 8, 2015

Non non bien au contraire je suis très content d'aider ! tu n'imagines pas à quel point ton projet me permet d'optimiser mon temps de surf dans la journée :) (je l'utilise uniquement sur mobile)

J'ai mis à jour avec https://github.com/FreshRSS/FreshRSS/tree/dev et pour l'heure j'ai une "### Fatal error! ###"

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 8, 2015

Arf arf oui, c'était pas une màj que tu aurais dû faire en fait (ma faute) mais une installation à côté : y a pas mal de choses qui ont changé dans le répertoire ./data et ça risque d'être un peu pénible de le faire à la main :s

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 8, 2015

Aucun problème, j'ai restauré mon freshrss.old3/ en attendant :D

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 12, 2015

Le 15 approche j'espère qu'on aura l'occaz de patcher ça pour la 1.0 :$

/se fait tout petit

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 12, 2015

Bin je veux bien mais il faut que tu testes la version de dev si tu veux être sûr que ça soit corrigé. Moi j'ai fait des trucs dans la branche dev, ça marche en local (comme avant) mais faut voir chez toi. Sinon tu attends la version 0.9.4 jeudi.

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 12, 2015

Avec migration des données intégrée ? :D

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 13, 2015

Oui oui la migration des données est prévue pour la 0.9.4.

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 16, 2015

Félicitations, le bug est résolu sur tous mes navigateurs de test ! :)

@Vincent14 Vincent14 closed this Jan 16, 2015

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 16, 2015

Cool ! \o/

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 17, 2015

NON ! Bon sang c'est fou ça recommence !

@Vincent14 Vincent14 reopened this Jan 17, 2015

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 21, 2015

Toujours pas de logs intéressants par hasard ?

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 21, 2015

"Bonne" nouvelle : j'arrive à reproduire le bug en local, je vais pouvoir bosser dessus

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 21, 2015

Ok j'ai à peu près repéré le bug mais il est très bizarre. Il est lié aux sessions et à leurs identifiants :

La première fois qu'on se connecte, on a une session A. La connexion réussit, il y a un paramètre de session (loginOk) qui est mis à "true", on est content.

Là tu fermes le navigateur et tu le rouvre : tu as une session B. Cette session n'étant pas initialisée, loginOk n'est pas à true donc tu n'es pas connecté. Là arrive le bug car, lorsque tu essaye d'accéder à la page ?c=auth&login&u=username&p=password, ce n'est pas la session B qui est utilisée mais la session A qui retourne que loginOk est true (donc il considère que tu ES connecté !). Comme tu es connecté, FRSS te redirige vers la page d'index pour que tu puisses lire tes flux… sauf qu'on repasse sur la session B à ce moment là et donc tu n'es plus connecté. Tadam!

Alors comment ça se passe ? Si je ne dis pas trop de bêtises, normalement le navigateur donne l'identifiant de session à utiliser en précisant dans un en-tête COOKIE : FreshRSS=B; […] (B étant l'identifiant de la session). Sur toutes les pages ça marche bien à priori sauf évidemment sur la page mentionnée où le COOKIE envoyé est de la forme : FreshRSS=A; FreshRSS=B; […]. FRSS prend donc de son côté le premier identifiant qu'il trouve.

Là j'avoue que je sèche sur le pourquoi du comment ça se passe comme ça. Peut-être que @Alkarex a une idée de son côté sinon je chercherai plus tard ;)

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 21, 2015

Ça y est j'ai compris le bug ! Il était particulièrement tordu mais j'ai compris :

Pour reproduire :

  • Bookmarker (ou copier/coller) l'adresse en ?c=auth&a=login&u=username&p=password
  • S'assurer que la page de FRSS est fermée avant de fermer le navigateur à son tour (pour qu'il oublie les cookies de session)
  • Rouvrir le navigateur et se rendre directement à l'adresse bookmarkée ! (surtout pas de passage par la page d'accueil)
  • Un cookie de session est alors créé (nouvelle session oblige) mais UNIQUEMENT pour le chemin (= l'adresse) précisé. La connexion se passe correctement si les identifiants sont bons et on est redirigé vers la page d'accueil.
  • Arrivé à la page d'accueil, le navigateur cherche un cookie de session pour le chemin précisé : il n'y en a pas et en créé donc un deuxième pour la page incriminée. Ce nouveau cookie n'est pas associé à une session valide donc pas connecté.
  • En essayant de se reconnecter avec l'adresse bookmarkée, le premier cookie est valide donc FRSS considère que l'on est connecté.

Le problème vient du fait qu'on attribue un chemin trop précis (avec session_set_cookie_params) pour les cookies de session, chose que l'on a effectivement introduite il y a peu (avec le système de maintien de session en fait).

Ma question à @Alkarex du coup vu qu'il me semble que tu es plus à jour que moi là-dessus : y aurait-il des problèmes en définissant un chemin plus global (par exemple /p/i que l'on pourrait extraire soit en supprimant index.php de $_SERVER['SCRIPT_NAME'] soit en supprimant la query_string de l'actuel request_uri) ?

@Alkarex

This comment has been minimized.

Copy link
Member

Alkarex commented Jan 21, 2015

Oui, le chemin ./p/i/ me semble être le mieux

marienfressinaud added a commit that referenced this issue Jan 21, 2015

@marienfressinaud

This comment has been minimized.

Copy link
Member

marienfressinaud commented Jan 21, 2015

Corrigé. Cette fois-ci je suis sûr que le bug n'est plus là donc je ferme le ticket. Je crois que c'est le bug le plus tordu auquel j'ai eu faire jusque-là ! :)

@Vincent14 > si tu veux corriger le bug à la main en attendant la sortie de la prochaine version, c'est juste deux lignes dans le fichier ./lib/Minz/Session.php, tu n'as que reproduire mon fix eec95ff

marienfressinaud added a commit that referenced this issue Jan 21, 2015

@Vincent14

This comment has been minimized.

Copy link
Author

Vincent14 commented Jan 21, 2015

Vous êtes l'équipe la plus ouf que j'ai jamais vu ! :D Mon calvaire prend fin \o/ MERCI ! <3 (c'est la journée du câlin il parait, vous en avez un chacun)

@Alkarex

This comment has been minimized.

Copy link
Member

Alkarex commented Jan 21, 2015

Merci @Vincent14 :-)

@Flaburgan

This comment has been minimized.

Copy link

Flaburgan commented Jan 22, 2015

GG les gars :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment