Bonjour à tous,


J'ai cherché sur Internet, mais je n'ai rien trouvé de convainquant ou du moins de concret, j'espère donc que je trouverai de l'aide et des solutions ici.


J'ai un serveur Debian Jessie à jour, avec un Apache2.x installé avec beaucoup de modules utiles. J'ai créé une base de données "users" pour permettre à eux seulement d'accéder à une partie privée de mon site.


Mais certains d'entre eux partagent leurs identifiants, pour ne pas en créer un !
Donc, mon problème est simple : "Je recherche à limiter un utilisateur à une seule connexion en même temps, ce qui implique déconnecter le ou les anciennes connexions automatiquement."


Voici la partie concerné de mon ".conf" fonctionnel :
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
 
 
DBDriver    mysql
DBDParams   "dbname=my_users user=test pass=test1234"
DBDMin      4
DBDKeep     8
DBDMax      20
DBDExptime  300
 
 
<Location /secretpart>
    AuthType                Basic
    AuthName                "Authentication required"
    AuthBasicProvider       socache dbd
    AuthnCacheProvideFor    dbd
    AuthnCacheContext       my-server
    Require                 valid-user
    AuthDBDUserPWQuery      "SELECT password FROM users WHERE name=%s"
</Location>

On m'a dit (une réponse par ci, par là) que celà n'était pas possible uniquement en Apache (Haut Niveau, première couche quand on arrive sur le site) et par conséquence il fallait mettre un système de stockage et de vérification de session_id en php, gràce à la page de connexion.
Lien "problème sur stackoverflow" : http://stackoverflow.com/questions/4...or-a-same-user


Du coup, j'ai trouvé des réponses sur ce forum (d'ou la création de ce post), qui explique tout simplement que quand un user essaye de se connecter, on peut savoir et vérifier si il a déjà une session, puis on le connecte ou l'empeche de se reconnecter en fonction de nos choix (temps de session minimum, etc.).
Lien "explication" : https://www.developpez.net/forums/d9...e/#post5163218
Lien "requete final" : https://www.developpez.net/forums/d9...e/#post5173701
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT COUNT(session_id) AS total FROM sessions WHERE users_id = :users_id AND date_expire > (UNIX_TIMESTAMP() + 600)

Puis, j'ai pu constaté qu'il semble faisable de récupérer et stocker les session_id lors d'une connexion Apache.
Lien "mod_session" : https://httpd.apache.org/docs/2.4/mod/mod_session.html
Lien "mod_session_dbd" : https://httpd.apache.org/docs/2.4/mo...ssion_dbd.html
Alors, je ne vois pas pourquoi on ne pourrait pas modifier la "AuthDBDUserPWQuery" pour vérifier le session_id en même temps.

Ne sachant pas si cette solution serait viable, et ou quelles autres sélectionner, j'espère en apprendre davantage ici.


Dans l'attente de vos réponses et diverses solutions,
En vous remerciant d'avance. =)