Quiero almacenar la identificación del usuario en una variable de sesión personalizada y usarla (leer) en los procedimientos de activación para autorizar las acciones del usuario. Encontré algo como esto:
set session "myapp.user" = '12345';
...
SELECT current_setting('myapp.user');
y parece funcionar: pensé que "myapp.user" debería declararse en el archivo .conf pero parece que puedo crear variables de sesión sobre la marcha (no cambié el archivo .conf en absoluto).
¿Hay alguna desventaja de hacer así?
postgresql
postgresql-9.4
usuario606521
fuente
fuente
myapp.user
debe declararsepostgresql.conf
se eliminó en 9.2 o 9.1Respuestas:
Antes de la versión 9.2, necesitaba agregar su variable de clase personalizada al
custom_variable_classes
parámetropostgresql.conf
, como:En 9.2, este requisito se ha eliminado :
Entonces, desde 9.2 solo puede configurar su variable de clase personalizada como lo está haciendo actualmente, no necesita preocuparse por cambiar
postgresql.conf
.fuente
Si solo necesita almacenar la ID de usuario, consulte Cómo obtener la ID de usuario del sistema operativo en PostgreSQL
Es bastante simple y no requiere una configuración personalizada.
fuente
Para casos como este, me gusta crear una función plperl como esta:
La ventaja de esto es que también funciona en sentencias sql, por ejemplo:
fuente