Die Sicherheit zu wissen, wer ist wer


Die ewigen Anfänger - Protokolleintrag #5.2
Dieser Artikel erschien zuerst auf https://www.undu.com
Eine frühere Version dieses Artikels erschien in frühen Feb 00. Einige Korrekturen, ein wenig vernünftig bearbeiten und bessere Organisation hoffentlich führt etwas besser für Sie, der Leser.
Vor kurzem fand ich mich ohne eine Anwendungskomponente anmelden. Durch die Umstände gezwungen eine für zumindest temporäre Auslastung erstellen, fand ich das Erlebnis interessant genug, dass ich dachte, dass ich einen Lauf zu schreiben einen Omnibus Artikel für meine Kollegen Neulinge nehmen würde. Vorsicht ein temporäres segue ein wenig weiter nach unten!
Ein Login-Formular ist nicht immer das Zeichen für eine Programmierung Paranoid. Ehrlich gesagt, benutze ich das Login-Formular um herauszufinden, wer die Anwendung verwendet wird, so dass ich Einträge und Änderungen mit einem Bezeichner kennzeichnen können. Benötigen Sie ein hohes Maß an Sicherheit auf der Komponente oder Menü, jetzt lassen und Check-out vollwertige Systeme wie das UIL-Sicherheitssystem. Aber wenn Sie eine einzelne app mit wenigen Benutzern ausführen zu unterscheiden oder wenn Sie eine 'kleine Sicherheit' haben möchten, lesen Sie weiter.
Leser werden sich erinnern, dass ich eher auf meine Lösungen zu kaufen, anstatt neu zu erfinden. Für Sicherheit und ein sehr hübsches Anmeldeformular zog ich Kalliopis SecurityGuard System. Bei der Verwendung von Delphi 3, fand ich es schnell zu installieren, einfach zu laufen und sehr mächtig sein. Leider gibt es keine Delphi 5-Version davon. Obwohl ich würde haben wurde sein erster in der Linie als es herauskam, ist meine neueste Informationen, dass es nie passieren wird. So musste ich ein Login-System zu haben, die Hauptsachen nutzten, die ich von SecurityGuard erwarten hatte. Es musste ein Login-Bildschirm und ein Mittel der Gewinnung von Informationen zu Sicherheitsstufen des Benutzers und andere verschiedene Informationen, wie Vorlieben (konnte dies durch INI/Registry-Dateien, aber es ist einfach SO viel einfacher ich es in der Security-Tabelle setzen, da einige Benutzer von Computer zu Computer migrieren).
Angesichts meiner vorübergehenden Bedarfs für eine Anmeldung, beschloss ich, meine Ambitionen zu begrenzen und die Arbeit an der gerade erst die Servernamen und Level-Info in der Anwendung. Ich begann mit der Gestaltung des Security-Tabelle, die ich als PAZWORDZ bezeichnen. Diese Tabelle sollte ein Feld für den Benutzernamen (verschlüsselt), das Passwort und alle anderen Informationen, die Sie für angemessen halten.
SEGUE: Benennen von Feldern
Erstellen Sie Ihre eigene Version einer Sicherheits-Tabelle, aber welcher Name betrachten Sie einen Vorbehalt. Missbrauche Sie nicht Ihr Recht auf Felder zu nennen, was Sie wollen. Vor vielen Jahren, war ich Teil der ersten Operation, Paradox für DOS, Interbase und Peer-to-Peer-Netzwerk zu verbinden. Borland, sagte es damals getan werden könnte nicht, aber wir haben... Nachdem wir eine ganze Reihe von Benennung Probleme behoben.
Dann entdeckte ich, dass Leerzeichen, Unterstriche und Satzzeichen in Feldnamen böse, böse, böse sind. Wie jeder andere zur Zeit war ich begeistert, das Joch der begrenzten dBase Namen und Geliebten Paradox Fähigkeit, Namen zu verwenden, die auf auf und und so weiter lief zu werfen. Es war das Äquivalent eines neuen Desktop-Publishing-Benutzers über Schriftarten und ihre Fülle herauszufinden. Oder als diese Erstbenutzer W95 entdeckte Ende der 8.3-Dateinamen-Tyrannei. Sie gingen Bananen. Für mich war es Feldnamen. Meine große Verbrechen war Feldnamen wie Telefon -Nr oder des Kunden Gründen. InterBase hasste diesen Namen. So wir die Struktur der Paradox-Datenbanken umgestrickt und ging dann aber das Programm Code (mehrere zehntausend Zeilen) suchen und ersetzen diesen Namen. NIE wieder.
Nun, ist nie eine lange Zeit. Als ich zuerst meine Sicherheit-Tabellen Gebäude war, habe ich einfache Namen für Felder. Ohne jeden Gedanken machte ich Feld für den Benutzernamen NAME. Ab Datum wurde Datum. Es gab ein paar andere vergehen, aber Sie erhalten den Drift. Diese Feldnamen beißen nicht mich, bis ich einige SQL verwenden musste. Die Namen wurde dann die Ursache für den zusätzlichen Aufwand. Wenn der Feldname wie ein wahrscheinlich Eigenschaftenname oder sogar aussieht möglicherweise wie eine Name-Eigenschaft, ändern es!. Tun Sie es jetzt, in der kreativen Phase, und Sie werden später viel glücklicher. Machen Sie es, Benutzername und StartDate. Wenn Sie nicht Groß-/Kleinschreibung Felder, dann stellen Sie sicher, dass Sie Auto-Cap die Felder Name und Kennwort möchten. Vergessen Sie schließlich nicht mit einem Passwort schützen das Endprodukt und das Kennwort aufzeichnen. Es ist ein versehen, die ich begangen habe.
SEGUE ÜBER.
Machen Sie mir ein Anmeldeformular. Ich begann mit der Delphi-Passwort Anforderungsformular. Ich kopierte die Bezeichnung und edit-Feld für das Kennwort zum Etikett für den Benutzernamen erstellen und bearbeiten (). Einige Gerangel der Etiketten, Felder und Schaltflächen gab mir das traditionelle Login-Formular mit Bearbeitungsfeld über das Bearbeitungsfeld Kennwort, Grenzstadt die Schaltflächen OK und Abbrechen. Die Bearbeitungsfelder waren beide Satz in Großbuchstaben, da ich Grossbuchstaben für Namen und Kennwörter in der Sicherheit-Tabelle verwendet wurde. Wenn Sie den zusätzlichen Schritt der Groß-/Kleinschreibung von Bezeichnern mit gehen wollen, dann tun Sie das nicht. Ich habe eine Datasource und Tabelle Komponente, die auf dem Formular mit Pazwordz verbunden. Als letzten Schliff beschloss ich, ein Bild mit meinem Logo und die Bezeichnung 'Eine Idee Mechanic App.' enthalten Sie können eine generische Bild, ein bestimmtes Bild von Unternehmen oder nichts überhaupt enthalten.
KeyPreview wurde auf true gesetzt, einen wichtigen Schritt gemacht. Und ich hatte die Anweisung verwendet die Dialoge-Einheit hinzu. Dann habe ich den folgenden Code:
var
DlgLogin2: TDlgLogin2;
AttemptsLeft: Integer;
Umsetzung
{Name und Kennwort nicht übereinstimmen, fortsetzen oder beenden?}
Prozedur TDlgLogin2.NoGood;
BEGIN {einen Versuch ab, wie viele gehen?}
AttemptsLeft: = AttemptsLeft - 1;
Wenn AttemptsLeft > = 1
dann beginnen Sie {Wipe out schlechten Versuch und gehe zurück zum Anfang}
eUserName.Text: = '';
ePassword.text: = '';
eUserName.setfocus;
{Sein ich könnte mehr erklärenden hier, aber warum?}
ShowMessage ('nicht korrekt sind, versuchen Sie es erneut!'); {Ich könnte mehr erklärenden sein)
Ende
sonst DlgLogin2.ModalResult: = MrAbort; {Zu viele Versuche, BYE!}
Ende;
{Griff den Tastenanschlag geben Sie in das Feld Benutzername bearbeiten}
Procedure TDlgLogin2.eUserNameKeyPress (Sender: TObject; Var Key: Char);
beginnen
Wenn Key = #13 {war es die Enter-Taste?}

dann beginnen {konvertieren geben Sie zu einer Registerkarte}
SelectNext (ActiveControl als tWinControl, True, True);
Schlüssel: = #0; {Wischen Sie den Tastenanschlag EINGABETASTE}
Ende;
Ende;
{Behandeln Sie die Enter-Taste in das Bearbeitungsfeld Kennwort zu und auf OK}
Procedure TDlgLogin2.ePasswordKeyPress (Sender: TObject; Var Key: Char);
beginnen
Wenn Key = #13
dann beginnen
SelectNext (ActiveControl als tWinControl, True, True);
Schlüssel: = #0;
OKBtnClick(Sender); {Entspricht dem Klicken auf den OKBtn}
Ende;
Ende;
{'Abbrechen' Benutzername und Kennwort eingeben. Programm wird nicht ausgeführt}
Prozedur TDlgLogin2.CancelBtnClick(Sender: TObject);
beginnen
DlgLogin2.ModalResult: = MrCancel;
Ende;
{Haben wir einen Versuch war es gut? JA! Ooops, Nr.!}
Prozedur TDlgLogin2.OKBtnClick(Sender: TObject);
beginnen
OKBtn.SetFocus; {Dies gewährleistet, dass das Bearbeiten im Feld Inhalt zu lesen, sind}
Wenn eUserName.text = ''
dann eUserName.setfocus {kein Name, kein Versuch}
elseif ePassword.text = ''
dann ePassword.setFocus {kein Kennwort, kein Versuch}
elseif TblPW.findkey([eUserName.text]) {heißt es?}
dann, wenn uppercase(TblPW.fieldByName('PASSWORD').asString)
ePassword.text = {ist das Passwort das gleiche?}
dann DlgLogin2.ModalResult: = MrOK {Let der Programmausführung}
sonst NoGood {alle Versuche liess?}
sonst NoGood; {Alle Versuche liess?}
Ende;
Initialisierung
AttemptsLeft: = 3;
Teil des Codes trägt zusätzliche Kommentar. Die KeyPress-Verfahren für die beiden Bearbeitungsfeldern sind identisch, mit Ausnahme der nachfolgenden spoofing der Knopfdruck die OK-Taste nach der Kollision geben Sie in das Feld 'Kennwort'. Und es fehlt an Fehler-Proofen mit diesem Projekt. Es gibt natürlich mehrere Plätze für Try / außer Block und Fehler-Handler. Es liegt an dir, zu bestimmen, wie viel weiter mit dem Tresor-Codierung Praxis auf diesen Job.
Die Projektdatei wird unten gezeigt:
verwendet
Formen,
DBtables,
Dialoge,
FInputInv in 'FInputInv.pas' {FrmMainInput},
uDlgLogin2 in 'E:\v5\uDlgLogin2.pas' {DlgLogin2};
{$R *. RES}
beginnen
Application.Initialize;
Session.addpassword('itsreallynotmyfault');
DlgLogin2: = TDlgLogin2.create(nil);
mit DlgLogin2 fangen
TblPw.DatabaseName: = 'Projekt1';
TblPW.TableName: = 'Pazwordz';
TblPW.Active: = True;
ShowModal;
Wenn ModalResult = 1
dann beginnen
Application.CreateForm (TFrmMainInput, FrmMainInput);
FrmMainInput.UserName: = DlgLogin2.eUserName.text;
FrmMainInput.DEB: =
DlgLogin2.TblPw.FieldByName('MiniID').asString;
Wenn FrmMainInput.DEB = ''
dann FrmMainInput.DEB: =
Copy(UpperCase(DlgLogin2.eUserName.Text),1,3);
FrmMainInput.SecLevel: =
DlgLogin2.TblPw.FieldByName('SecLevel').asInteger;
FrmMainInput.PgmDir: = ExtractFilePath (Anwendung. ExeName);
DlgLogin2.free;
Application.Run;
Ende
sonst DlgLogin2.free;
Ende;
Ende.
Noch einmal, gibt es einige Gaunerei mit der Anweisung verwendet die DPR-Datei. Ich habe DBTables und Dialoge der Anmeldedialog und die Datenbankkomponenten auf diesem Formular zu bewältigen. Ich konnte mit dem Abschnitt wo ich die Sicherheit der Tabellenalias Tabellennamen festlegen und aktivieren es verzichtet haben. Aber ich wollte machen dies eine universelle Form zu bilden, die ich mit vielen Anwendungen verwenden könnte. Also, ich habe das Formular Dialog an einem zentralen Ort gespeichert und in die Zeilen hier um erfolgreich zu betreiben.
Eine Gotcha ist entstanden. Ursprünglich, die 'Wenn ModalResult = 1' Linie war 'Wenn ModalResult = MrOK.' Der Compiler darauf erstickt, konnte nicht behauptete, es MrOK herausfinden. Ich war ziemlich sicher, dass MrOK in Dialogen definiert wurde, aber ich aufgab und stattdessen den Enumerationswert 1 für MrOK verwendet.
Natürlich ist es wichtig, an das Anmeldefenster festhalten, so lange Sie können, um überqueren Sie die Sicherheitsstufe, Benutzername und andere Miscellanea, die Sie in der Tabelle der Sicherheit haben. Ich benutze das DEB-Feld die Mini-Kennzeichnung für Identität zu tun. Es steht für Daten eingegeben durch und ist in der Regel die ersten drei Buchstaben des Namens. Aber bei ANG, es könnte Angelo oder Angie, so dass der Inhalt des MiniID der Sicherheit Tabellenfeld unterscheidet zwischen den beiden als ALO und ANG.
Ich hoffe können diese Idee Sie starten Sie Ihr eigenes Login-Formular, ob es aus Sicherheitsgründen oder um herauszufinden, wer die Anwendung jetzt verwendet.
Gary Mugford
Idee-Mechaniker, Bramalea ON Kanada
[email protected]









Die Sicherheit zu wissen, wer ist wer


Die Sicherheit zu wissen, wer ist wer : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Die ewigen Anfänger - Protokolleintrag #5.2
Dieser Artikel erschien zuerst auf https://www.undu.com
Eine frühere Version dieses Artikels erschien in frühen Feb 00. Einige Korrekturen, ein wenig vernünftig bearbeiten und bessere Organisation hoffentlich führt etwas besser für Sie, der Leser.
Vor kurzem fand ich mich ohne eine Anwendungskomponente anmelden. Durch die Umstände gezwungen eine für zumindest temporäre Auslastung erstellen, fand ich das Erlebnis interessant genug, dass ich dachte, dass ich einen Lauf zu schreiben einen Omnibus Artikel für meine Kollegen Neulinge nehmen würde. Vorsicht ein temporäres segue ein wenig weiter nach unten!
Ein Login-Formular ist nicht immer das Zeichen für eine Programmierung Paranoid. Ehrlich gesagt, benutze ich das Login-Formular um herauszufinden, wer die Anwendung verwendet wird, so dass ich Einträge und Änderungen mit einem Bezeichner kennzeichnen können. Benötigen Sie ein hohes Maß an Sicherheit auf der Komponente oder Menü, jetzt lassen und Check-out vollwertige Systeme wie das UIL-Sicherheitssystem. Aber wenn Sie eine einzelne app mit wenigen Benutzern ausführen zu unterscheiden oder wenn Sie eine 'kleine Sicherheit' haben möchten, lesen Sie weiter.
Leser werden sich erinnern, dass ich eher auf meine Lösungen zu kaufen, anstatt neu zu erfinden. Für Sicherheit und ein sehr hübsches Anmeldeformular zog ich Kalliopis SecurityGuard System. Bei der Verwendung von Delphi 3, fand ich es schnell zu installieren, einfach zu laufen und sehr mächtig sein. Leider gibt es keine Delphi 5-Version davon. Obwohl ich würde haben wurde sein erster in der Linie als es herauskam, ist meine neueste Informationen, dass es nie passieren wird. So musste ich ein Login-System zu haben, die Hauptsachen nutzten, die ich von SecurityGuard erwarten hatte. Es musste ein Login-Bildschirm und ein Mittel der Gewinnung von Informationen zu Sicherheitsstufen des Benutzers und andere verschiedene Informationen, wie Vorlieben (konnte dies durch INI/Registry-Dateien, aber es ist einfach SO viel einfacher ich es in der Security-Tabelle setzen, da einige Benutzer von Computer zu Computer migrieren).
Angesichts meiner vorübergehenden Bedarfs für eine Anmeldung, beschloss ich, meine Ambitionen zu begrenzen und die Arbeit an der gerade erst die Servernamen und Level-Info in der Anwendung. Ich begann mit der Gestaltung des Security-Tabelle, die ich als PAZWORDZ bezeichnen. Diese Tabelle sollte ein Feld für den Benutzernamen (verschlüsselt), das Passwort und alle anderen Informationen, die Sie für angemessen halten.
SEGUE: Benennen von Feldern
Erstellen Sie Ihre eigene Version einer Sicherheits-Tabelle, aber welcher Name betrachten Sie einen Vorbehalt. Missbrauche Sie nicht Ihr Recht auf Felder zu nennen, was Sie wollen. Vor vielen Jahren, war ich Teil der ersten Operation, Paradox für DOS, Interbase und Peer-to-Peer-Netzwerk zu verbinden. Borland, sagte es damals getan werden könnte nicht, aber wir haben... Nachdem wir eine ganze Reihe von Benennung Probleme behoben.
Dann entdeckte ich, dass Leerzeichen, Unterstriche und Satzzeichen in Feldnamen böse, böse, böse sind. Wie jeder andere zur Zeit war ich begeistert, das Joch der begrenzten dBase Namen und Geliebten Paradox Fähigkeit, Namen zu verwenden, die auf auf und und so weiter lief zu werfen. Es war das Äquivalent eines neuen Desktop-Publishing-Benutzers über Schriftarten und ihre Fülle herauszufinden. Oder als diese Erstbenutzer W95 entdeckte Ende der 8.3-Dateinamen-Tyrannei. Sie gingen Bananen. Für mich war es Feldnamen. Meine große Verbrechen war Feldnamen wie Telefon -Nr oder des Kunden Gründen. InterBase hasste diesen Namen. So wir die Struktur der Paradox-Datenbanken umgestrickt und ging dann aber das Programm Code (mehrere zehntausend Zeilen) suchen und ersetzen diesen Namen. NIE wieder.
Nun, ist nie eine lange Zeit. Als ich zuerst meine Sicherheit-Tabellen Gebäude war, habe ich einfache Namen für Felder. Ohne jeden Gedanken machte ich Feld für den Benutzernamen NAME. Ab Datum wurde Datum. Es gab ein paar andere vergehen, aber Sie erhalten den Drift. Diese Feldnamen beißen nicht mich, bis ich einige SQL verwenden musste. Die Namen wurde dann die Ursache für den zusätzlichen Aufwand. Wenn der Feldname wie ein wahrscheinlich Eigenschaftenname oder sogar aussieht möglicherweise wie eine Name-Eigenschaft, ändern es!. Tun Sie es jetzt, in der kreativen Phase, und Sie werden später viel glücklicher. Machen Sie es, Benutzername und StartDate. Wenn Sie nicht Groß-/Kleinschreibung Felder, dann stellen Sie sicher, dass Sie Auto-Cap die Felder Name und Kennwort möchten. Vergessen Sie schließlich nicht mit einem Passwort schützen das Endprodukt und das Kennwort aufzeichnen. Es ist ein versehen, die ich begangen habe.
SEGUE ÜBER.
Machen Sie mir ein Anmeldeformular. Ich begann mit der Delphi-Passwort Anforderungsformular. Ich kopierte die Bezeichnung und edit-Feld für das Kennwort zum Etikett für den Benutzernamen erstellen und bearbeiten (). Einige Gerangel der Etiketten, Felder und Schaltflächen gab mir das traditionelle Login-Formular mit Bearbeitungsfeld über das Bearbeitungsfeld Kennwort, Grenzstadt die Schaltflächen OK und Abbrechen. Die Bearbeitungsfelder waren beide Satz in Großbuchstaben, da ich Grossbuchstaben für Namen und Kennwörter in der Sicherheit-Tabelle verwendet wurde. Wenn Sie den zusätzlichen Schritt der Groß-/Kleinschreibung von Bezeichnern mit gehen wollen, dann tun Sie das nicht. Ich habe eine Datasource und Tabelle Komponente, die auf dem Formular mit Pazwordz verbunden. Als letzten Schliff beschloss ich, ein Bild mit meinem Logo und die Bezeichnung 'Eine Idee Mechanic App.' enthalten Sie können eine generische Bild, ein bestimmtes Bild von Unternehmen oder nichts überhaupt enthalten.
KeyPreview wurde auf true gesetzt, einen wichtigen Schritt gemacht. Und ich hatte die Anweisung verwendet die Dialoge-Einheit hinzu. Dann habe ich den folgenden Code:
var
DlgLogin2: TDlgLogin2;
AttemptsLeft: Integer;
Umsetzung
{Name und Kennwort nicht übereinstimmen, fortsetzen oder beenden?}
Prozedur TDlgLogin2.NoGood;
BEGIN {einen Versuch ab, wie viele gehen?}
AttemptsLeft: = AttemptsLeft - 1;
Wenn AttemptsLeft > = 1
dann beginnen Sie {Wipe out schlechten Versuch und gehe zurück zum Anfang}
eUserName.Text: = '';
ePassword.text: = '';
eUserName.setfocus;
{Sein ich könnte mehr erklärenden hier, aber warum?}
ShowMessage ('nicht korrekt sind, versuchen Sie es erneut!'); {Ich könnte mehr erklärenden sein)
Ende
sonst DlgLogin2.ModalResult: = MrAbort; {Zu viele Versuche, BYE!}
Ende;
{Griff den Tastenanschlag geben Sie in das Feld Benutzername bearbeiten}
Procedure TDlgLogin2.eUserNameKeyPress (Sender: TObject; Var Key: Char);
beginnen
Wenn Key = #13 {war es die Enter-Taste?}

dann beginnen {konvertieren geben Sie zu einer Registerkarte}
SelectNext (ActiveControl als tWinControl, True, True);
Schlüssel: = #0; {Wischen Sie den Tastenanschlag EINGABETASTE}
Ende;
Ende;
{Behandeln Sie die Enter-Taste in das Bearbeitungsfeld Kennwort zu und auf OK}
Procedure TDlgLogin2.ePasswordKeyPress (Sender: TObject; Var Key: Char);
beginnen
Wenn Key = #13
dann beginnen
SelectNext (ActiveControl als tWinControl, True, True);
Schlüssel: = #0;
OKBtnClick(Sender); {Entspricht dem Klicken auf den OKBtn}
Ende;
Ende;
{'Abbrechen' Benutzername und Kennwort eingeben. Programm wird nicht ausgeführt}
Prozedur TDlgLogin2.CancelBtnClick(Sender: TObject);
beginnen
DlgLogin2.ModalResult: = MrCancel;
Ende;
{Haben wir einen Versuch war es gut? JA! Ooops, Nr.!}
Prozedur TDlgLogin2.OKBtnClick(Sender: TObject);
beginnen
OKBtn.SetFocus; {Dies gewährleistet, dass das Bearbeiten im Feld Inhalt zu lesen, sind}
Wenn eUserName.text = ''
dann eUserName.setfocus {kein Name, kein Versuch}
elseif ePassword.text = ''
dann ePassword.setFocus {kein Kennwort, kein Versuch}
elseif TblPW.findkey([eUserName.text]) {heißt es?}
dann, wenn uppercase(TblPW.fieldByName('PASSWORD').asString)
ePassword.text = {ist das Passwort das gleiche?}
dann DlgLogin2.ModalResult: = MrOK {Let der Programmausführung}
sonst NoGood {alle Versuche liess?}
sonst NoGood; {Alle Versuche liess?}
Ende;
Initialisierung
AttemptsLeft: = 3;
Teil des Codes trägt zusätzliche Kommentar. Die KeyPress-Verfahren für die beiden Bearbeitungsfeldern sind identisch, mit Ausnahme der nachfolgenden spoofing der Knopfdruck die OK-Taste nach der Kollision geben Sie in das Feld 'Kennwort'. Und es fehlt an Fehler-Proofen mit diesem Projekt. Es gibt natürlich mehrere Plätze für Try / außer Block und Fehler-Handler. Es liegt an dir, zu bestimmen, wie viel weiter mit dem Tresor-Codierung Praxis auf diesen Job.
Die Projektdatei wird unten gezeigt:
verwendet
Formen,
DBtables,
Dialoge,
FInputInv in 'FInputInv.pas' {FrmMainInput},
uDlgLogin2 in 'E:\v5\uDlgLogin2.pas' {DlgLogin2};
{$R *. RES}
beginnen
Application.Initialize;
Session.addpassword('itsreallynotmyfault');
DlgLogin2: = TDlgLogin2.create(nil);
mit DlgLogin2 fangen
TblPw.DatabaseName: = 'Projekt1';
TblPW.TableName: = 'Pazwordz';
TblPW.Active: = True;
ShowModal;
Wenn ModalResult = 1
dann beginnen
Application.CreateForm (TFrmMainInput, FrmMainInput);
FrmMainInput.UserName: = DlgLogin2.eUserName.text;
FrmMainInput.DEB: =
DlgLogin2.TblPw.FieldByName('MiniID').asString;
Wenn FrmMainInput.DEB = ''
dann FrmMainInput.DEB: =
Copy(UpperCase(DlgLogin2.eUserName.Text),1,3);
FrmMainInput.SecLevel: =
DlgLogin2.TblPw.FieldByName('SecLevel').asInteger;
FrmMainInput.PgmDir: = ExtractFilePath (Anwendung. ExeName);
DlgLogin2.free;
Application.Run;
Ende
sonst DlgLogin2.free;
Ende;
Ende.
Noch einmal, gibt es einige Gaunerei mit der Anweisung verwendet die DPR-Datei. Ich habe DBTables und Dialoge der Anmeldedialog und die Datenbankkomponenten auf diesem Formular zu bewältigen. Ich konnte mit dem Abschnitt wo ich die Sicherheit der Tabellenalias Tabellennamen festlegen und aktivieren es verzichtet haben. Aber ich wollte machen dies eine universelle Form zu bilden, die ich mit vielen Anwendungen verwenden könnte. Also, ich habe das Formular Dialog an einem zentralen Ort gespeichert und in die Zeilen hier um erfolgreich zu betreiben.
Eine Gotcha ist entstanden. Ursprünglich, die 'Wenn ModalResult = 1' Linie war 'Wenn ModalResult = MrOK.' Der Compiler darauf erstickt, konnte nicht behauptete, es MrOK herausfinden. Ich war ziemlich sicher, dass MrOK in Dialogen definiert wurde, aber ich aufgab und stattdessen den Enumerationswert 1 für MrOK verwendet.
Natürlich ist es wichtig, an das Anmeldefenster festhalten, so lange Sie können, um überqueren Sie die Sicherheitsstufe, Benutzername und andere Miscellanea, die Sie in der Tabelle der Sicherheit haben. Ich benutze das DEB-Feld die Mini-Kennzeichnung für Identität zu tun. Es steht für Daten eingegeben durch und ist in der Regel die ersten drei Buchstaben des Namens. Aber bei ANG, es könnte Angelo oder Angie, so dass der Inhalt des MiniID der Sicherheit Tabellenfeld unterscheidet zwischen den beiden als ALO und ANG.
Ich hoffe können diese Idee Sie starten Sie Ihr eigenes Login-Formular, ob es aus Sicherheitsgründen oder um herauszufinden, wer die Anwendung jetzt verwendet.
Gary Mugford
Idee-Mechaniker, Bramalea ON Kanada
[email protected]


Die Sicherheit zu wissen, wer ist wer

Die Sicherheit zu wissen, wer ist wer : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Die Sicherheit zu wissen, wer ist wer
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung