Apache2.x - Empêcher la connexion multiple pour un même utilisateur
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:
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:
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. =)