Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ocultar ConnectionString TADOConnection (https://www.clubdelphi.com/foros/showthread.php?t=32018)

IsidoroM 24-05-2006 16:01:38

Ocultar ConnectionString TADOConnection
 
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 [Germán.Estévez] 25-05-2006 10:01:38

Aquí discutimos 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:
Código Delphi [-]
  ADOQ.Active := True;

Siempre podrá hacer:
Código Delphi [-]
  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:

Código Delphi [-]
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:
Código Delphi [-]
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:
Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 01:30:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi