Anomalie #3807

[gestion sessions] : suppression de session inutilisée

Ajouté par Guillaume Fahrner il y a plus d'un an. Mis à jour il y a 7 mois.

Statut:FerméDébut:12/07/2016
Priorité:HautEchéance:
Assigné à:cedric -% réalisé:

100%

Catégorie:authentification
Version cible:3.1
Resolution:fixed Navigateur:

Description

Lors de l'authentification d'un utilisateur un nouveau fichier de session est créé et tous les fichiers des sessions existants sont mis à jour à cause du changement des champs "maj" et "date_session". Effet de bort : si un utilisateur s'authentifie en boucle sans jamais se délogger le répertoire tmp/sessions/ se rempli sans jamais être vidé.

Le problème se situe ici :

https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L472

L'idée proposé pour résoudre ce problème consiste à comparer plus finement les sessions avant de les mettre à jour :

ajout de la fonction :

/**
 * Comparer deux sessions
 *  
 */
function comparer_sessions($a, $b) {
    if ($a == $b) {
        return true;
    }
    unset($a['maj'], $a['date_session']);
    unset($b['maj'], $b['date_session']);
    return $a == $b;
}

et de modifier https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L472 pour l'utiliser :

if ( ! comparer_sessions($auteur_session, $GLOBALS['visiteur_session']) ) {

session.php.spip311_r22913.patch Magnifier - patch sur la version 3.1.1 (499 octets) Guillaume Fahrner, 18/07/2016 08:59

Révisions associées

Révision 23545
Ajouté par cedric@yterium.com il y a 7 mois

Fix #3807 : limiter le nombre de sessions maxi d'un auteur quand on en ouvre une nouvelle ou quand on actualise les sessions
Si plus que le seuil defini par la constante _NB_SESSIONS_MAX les plus anciennes sont supprimees

Révision 23546
Ajouté par cedric@yterium.com il y a 7 mois

Report de r23545 : Fix #3807 : limiter le nombre de sessions maxi d'un auteur quand on en ouvre une nouvelle ou quand on actualise les sessions
Si plus que le seuil defini par la constante _NB_SESSIONS_MAX les plus anciennes sont supprimees

Historique

#1 Mis à jour par Guillaume Fahrner il y a plus d'un an

Il faut aussi décommenter https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/session.php#L216 pour que les vieilles sessions soit bien supprimées.

#2 Mis à jour par b b il y a plus d'un an

Salut Guillaume, tu peux fournir un patch stp ?

#3 Mis à jour par b b il y a plus d'un an

  • Version cible mis à 3.1

#4 Mis à jour par Guillaume Fahrner il y a plus d'un an

Hop, le patch :-)

#5 Mis à jour par marcimat 🌈 il y a 9 mois

Il est vidé à quel moment ce répertoire de sessions d'ailleurs ?

#6 Mis à jour par marcimat 🌈 il y a 9 mois

De ce que je lis seule la fonction supprimer_sessions() nettoie les sessions, et est appelée seulement lorsque l'utilisateur se déconnecte (action/logout > $session(id auteur)).
Du coup, je ne vois pas en quoi le patch améliorerait les choses ?

À moins qu'une tâche cron puisse passer nettoyer le répertoire de session également en plus. (mais il n'y en a pas actuellement).

#7 Mis à jour par guytarr ° il y a 7 mois

  • Assigné à mis à cedric -

#8 Mis à jour par Anonyme il y a 7 mois

  • Statut changé de Nouveau à Fermé
  • % réalisé changé de 0 à 100

Appliqué par commit r23545.

#9 Mis à jour par cedric - il y a 7 mois

Le nombre maxi de session d'un auteur est maintenant limité et vérifié à l'identification initiale et lors de la mise à jour d'une session

#10 Mis à jour par b b il y a 7 mois

  • Resolution mis à fixed

Formats disponibles : Atom PDF

Ajouter une image à partir du presse-papier (Taille maximale: 1,25 Mo)