![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: ?
Username für Loginbereich aus seperater Datenbank
Hallo Leute,
ich habe eine Frage. Unzwar arbeite ich an einem neuen Projekt welches einen Login Bereich enthalten soll. Die Anwendung wird im Netzwerk laufen und nun zur Umsetzung: ich brauche eine kleine Datenbank welche eine Tabelle mit 3 Spalten enthält. In diesen 3 Spalten werden Kürzel eingetragen. Die eigentliche Anwendung soll nun den Domänenbenutzernamen mit den Kürzeln aus den 3 Tabellenspalten vergleichen. Die Spalte die zutrifft, z.B. "Administrator" ist dann auch einer der 3 möglichen Eingabemasken die der User dann hat. Arbeitet also User X mit Programm Y und sein Kürzel X ist in der Spalte Administration zu finden, soll er in den Administratorbereich weitergeleitet werden. Wie realisiere ich das am besten? Welche Komponenten nehme ich und gibt es kostenlose software zur Unterstützung? Mein Ding ist nur dass ich noch nicht mit Datenbanken gearbeitet habe. Über korekte Tutorialquellen würde ich mich auch freuen. Vielen Dank im vorraus. New |
AW: Username für Loginbereich aus seperater Datenbank
Ich würde Dir die IBDAC Komponenten empfehlen. Habe klasse Erfahrungen damit gemacht. Desweiteren solltest Du Dir mal ein Tutorial über SQL ansehen. Eine Referenz findest Du
![]() Ich vermute, das ganze soll mit Passworteingabe sein. Ich empfehle Dir, das Passwort nicht im Klartext in der DB zu speichern, sondern den md5-Hash und dann beim Login auf selbigen zu überprüfen. Ob der Login korrekt ist, kannst Du z.B. überprüfen, ob folgender SQL-Syntax einen Datensatz liefert. Wenn ja, dann Login korrekt, wenn nein, dann Login falsch.
Delphi-Quellcode:
Hier solltest im Übrigen Du mit Parametern arbeiten, um SQL-Injections zu verhindern!
SELECT id FROM tblUserDaten ud
WHERE ((ud.Username = xxxx) AND (ud.PassHash = xxxxxxxxx)) Was die Tutorials angeht, liefert Google und die Forensuche genug :-) |
AW: Username für Loginbereich aus seperater Datenbank
Wenn ich das richtig verstanden habe, soll die lokale Domäne für die Authentifizierung zuständig sein. Also im worst case hält einfach der Username her, sehr ordentlich geschrieben wird der nochmal verifiziert. Also kein Passwort, sondern nur ein Status.
Wenn aber Passwort, dann nicht bloß Hash, sondern immer nur mit ![]() Ich denke, der erste Ansatz sollte nicht Code oder gar Komponenten sein, sondern Einlesen in Datenbanken an sich. "Eine Tabelle mit drei Spalten" klingt nicht wie das, was ich aus der Aufgabenbeschreibung verstehe, eher sowas wie eine Username-Rechtestufe-Tabelle wie:
Code:
Und dann die Abfrage:
CREATE TABLE `intra_horde`.`rights` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `username` CHAR( 255 ) NOT NULL , `level` ENUM( 'unknown', 'newbie', 'advanced', 'admin' ) NOT NULL DEFAULT 'unknown', UNIQUE ( `username` ) );
Code:
SELECT DISTINCT `level`
FROM `rights` WHERE `username` LIKE 'KarlOtto'; |
AW: Username für Loginbereich aus seperater Datenbank
Ins Unreine gesprochen,
ich würde dafür zwei Tabellen nutzen "User" und "Rights". ggf. fals einem Benutzer auch mehrere Rechte zugewiesen werden können, noch die "UserRights" für N:N Beziehungen. Ggf. könnte man auch die LDAP nutzen, wenn DB-User und Login-User immer die gleichen Personen sind. Aber das geht u.U. schon zu weit. Gruß K-H |
AW: Username für Loginbereich aus seperater Datenbank
Warum 2 Tabellen? - Statt des ENUMS einfach ein SET verwenden. Das arbeitet intern wie eine Bitmaske und damit kann man die Rechte auch eintragen (auch mehr als 1).
Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz