PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 25/10/2019 20:17:01

ramirez22
Membre

[PG9.6] Identification d'une connexion

Bonjour,

Le titre est peu explicite, je vais développer pas de panique.

Ma base PostgreSQL ne m'appartient pas : je n'ai que très peu de droit et notamment, l'impossibilité de créer des roles.
Du coup, je suis obligé de passer par un role (créé par l'administrateur du serveur) qui possède avec la totalité des droits (alors que certains utilisateurs n'auraient pas besoin de certains droits ... mais bon, j'ai pas le choix de toute façon) sauf CREATEROLE evidemment.


La gestion des utilisateurs de mon application est donc faite par une table spécifique dans mon appli.


Afin de complexifier la chose, j'ouvre 2 connexions distinctes pour chaque utilisateur. Ceci étant pour permettre d'enregistrer des informations de débogage en cas de plantage d'une requête (le ROLLBACK effacerait les informations de débuggage ....)

Forcément, si je fais un

SELECT * FROM pg_stat_activity;

Je me retrouve avec les 2 connexions actives, mais seuls le pid, les ports et les adresses IP changent. Et j'ai pas la liste des adresses IP de chaque utilisateur (DHCP en plus ...)


L'accès à la base utilisateur ne se fait en 2 occasions :
- à la connexion pour récupérer les infos utilisateur. Si le profil utilisateur est supprimé, pas de problème car cela sera pris en compte lors de la prochaine connexion
- lors de changement du mot de passe. Et là, c'est le drame : si un administrateur a supprimé le compte, on va droit dans le mur !


J'avais imaginer mettre un verrou sur l'enregistrement avec une troisième connexion. Mais ça commence à faire beaucoup de connexions pour peu de chose. De plus, que devient un verrou si la connexion est perdue. Et ça le permet d'empêcher une suppression d'utilisateur, mais pas de savoir si l'utilisateur est connecté.


Bref, je ne vois pas trop comment faire. Si vous pouvez allumer ma lanterne SVP ...

A+

Hors ligne

#2 25/10/2019 20:29:42

rjuju
Administrateur

Re : [PG9.6] Identification d'une connexion

le ROLLBACK effacerait les informations de débuggage ....

Je ne comprends toujours pas pourquoi utiliser SAVEPOINT / ROLLBACK TO et/ou des blocs d'exceptions plpgsql ne résoudraient pas votre problème

Bref, je ne vois pas trop comment faire. Si vous pouvez allumer ma lanterne SVP ...

Pas sur de comprendre exactement votre problème, mais utiliser "SET application_name to 'les infos qui vous intéressent';" n'irait pas ?

Hors ligne

#3 15/11/2019 17:30:01

ramirez22
Membre

Re : [PG9.6] Identification d'une connexion

Bonjour,


Désolé du délais de la réponse, j'avais complètement changé mon fusil d'épaule et ... j'ai zappé ce post roll
Le but était de savoir qui, de mes utilisateurs, était connecté. Mais c'est vraiment une fonction peu utile, je laisse tomber l'affaire.


Merci quand même !

Hors ligne

Pied de page des forums