Wie kann ich ein Interbase-Passwort erhalten, wenn ich nur den BDE-Alias habe?
Frage
Ich versuche, zur Laufzeit über die BDE eine Verbindung zu einer Interbase-Datenbank herzustellen.Ich versuche dies in einem formlosen Projekt zu tun (aber nicht in einer Konsolen-App).Der Alias ist bekannt.Ich rufe den Alias aus der Registrierung ab.Beispiel:MeinAlias.
//create alias params list
AParams:= TStringList.Create;
//create a session to get alias parameters
ASession:= TSession.Create(nil);
ASession.SessionName := 'MainSession';
try
ASession.GetAliasParams(tmpAlias, AParams);
finally
ASession.Free;
end;
//connect to database
dbMain:= TDatabase.Create(nil);
with dbMain do
begin
//AliasName:= 'MyAlias';
DatabaseName:= 'test';
LoginPrompt:= False;
Params.Assign(AParams);
try
Connected:=True;
if Connected then ShowMessage('Connected!') else ShowMessage('Failed to Connect!');
finally
Free;
end; //try
end;//with
//free alias params list
AParams.Free;
Wie auch immer, es sieht nicht so aus, als ob Session.GetParams tatsächlich das Passwort erhält.Wie erhalte ich das Passwort?Gibt es eine Möglichkeit, alle Verbindungsinformationen von der BDE abzurufen und die Verbindung herzustellen, wenn ich den Alias kenne?Ich möchte den Benutzernamen und das Passwort lieber nicht fest codieren, für den Fall, dass der Kunde sie in Zukunft ändert.
Lösung
Shane, wenn Sie das Passwort aus der Datenbank erhalten könnten, indem Sie nur den Alias kennen, wäre die gesamte Sicherheit der Datenbank sinnlos. Die Antwort lautet also NEIN , können Sie diese Informationen nicht abrufen, wenn Sie nur den BDE-Alias kennen.Die Möglichkeit, eine Verbindung zu einer Datenbank mit Passwortschutz herzustellen, besteht darin, den Benutzer und das Passwort vom Endbenutzer anzufordern oder diese Informationen in einer verschlüsselten Konfigurationsdatei zu speichern.