Ver la Versión Completa : Ocultar ConnectionString TADOConnection
IsidoroM
24-05-2006, 16:01:38
Buenas,
estoy intentando ver la manera de ocultar las property ConnectionString y ConnectionObject del objeto TADOConnection con el objeto de que un programador pueda utilizar este objeto de conexión a la BBDD con unos valores preestablecidos y que no puedan leerse así evitar que el equipo de programación pueda conocer el usuario, contraseña, ... de acceso a la BBDD.
He probado de crear una clase nueva que herede de TADOConnection sobreescribiendo la funcion read de la propiedad ConnectionString, pero si esta nueva clase la instancio en un TADOConnection me vuelve a ejecutar la funcion read del TADOConnection mostrando de nuevo el contenido del ConnectionString.
¿Alguien tiene alguna idea?
Gracias y un saludo.
luisgutierrezb
24-05-2006, 21:54:20
porque no creas un componente que se llame algo asi como TMyConexion donde tengas las propiedades que necesites para la conexion, y haces un metodo de conectar o algo asi, que mande llamar a un TAdoConnection que hayas creado en tu componente, asi todo quedara oculto.
mazinger
24-05-2006, 22:22:20
Yo encriptaria el valor de ConnectionString y lo cargas en tiempo de ejecución con algún método que desencripte la cadena.
Neftali
25-05-2006, 10:01:38
Aquí discutimos (http://www.clubdelphi.com/foros/showpost.php?p=65465&postcount=3) en su día, cómo ocultar propiedades published de un componente; Puedes probarlo con el tuyo; Pero me parece una tarea imposible initentar "ocultarle" a un programador que va a trabajar con eso la cadena de conexión... Se me ocurre que aunque pudieras ocultarsela visualmente, siempre podrá programar un código para verla...
Si debe programar:
ADOQ.Active := True;
Siempre podrá hacer:
MessageDlg(ADOQ.ConnectionString, mtInformation, [mbOK], 0);
MessageDlg(ADOQ.Connection.ConnectionString, mtInformation, [mbOK], 0);
...
IsidoroM
25-05-2006, 17:01:59
Buenas,
conseguí ocultar la propiedad ConnecionString de la siguiente manera:
type
TADOConnectionEclipse = class(TADOConnection) // Ocultar ConnectionString y ConnectionObject
private
FConnectionString: WideString;
function GetConnectionString: WideString;
protected
public
property ConnectionObject;
published
property ConnectionString read GetConnectionString;
end;
sobreescribiendo la funcion GetConnectionString por el código que me devuelva un texto diferente al de conexión.
El problema fué que cuando creaba un objeto de esta manera:
var
ace:TADOConnectionMio;
begin
ace:=TADOConnectionMio.Create(Self);
y llamaba a ace.ConnecionString el resultado era el esperado: me enseñaba el resultado que le había dado a la propiedad, pero si hago esto:
var
ace:TADOConnectionMio;
begin
ace:=TADOConnection.Create(Self);
y ejecuto ace.ConnectionString, me ejecuta la función read del objeto TADOConnection mostrándome el valor real del ConnectionString.
He mirado en el tema del foro que comenta Neftali donde comentan: "El nivel de visibilidad de una propiedad o método no puede degradarse, sólo aumentarse", por lo que sería imposible realizar lo que quiero de esta manera.
vBulletin v3.6.8, Derechos ©2000-2013, Jelsoft Enterprises Ltd.