![]() |
Login-Funktion: nur ein Benutzer mit bestimmten Zugangsdaten
Hallo!
Ich stehe vor einer ziemlich komplizierten Aufgabe und weiß nicht genau, ob so etwas überhaupt machbar ist und absturz- und pannensicher funktionieren kann. Und zwar, ich brauche eine Login/Logout-Funktion, die nur einen Benutzer mit den bestimmten Zugangsdaten zur selber Zeit rein lässt. Ich meine, wenn ein Benutzer angemeldet ist und ein zweiter versucht, sich mit den gleichen Zugangsdaten anzumelden, wird dem letzten den Zugang verweigert. Auf ersten Blick ist das ganze gar nicht so schwer und lässt sich theoretisch mithilfe einer Datenbank realisieren. Man setzt den Status auf "1" wenn Benutzer angemeldet ist auf dann wieder auf "0" wenn Benutzer sich abmeldet. Voraussetzung ist natürlich, dass man das Programm immer richtig heruntergefahren wird. In Wirklichkeit ist die Sache wesentlich komplizierter. Denn niemand ist von einem Windowsabsturz und Strommausfall abgesichert und wenn etwas abstürzt, ist man natürlich nicht abgemeldet und kommt nicht noch mal rein etc. Da muss man wieder irgendwelche Pings einbauen, die wieder mal wahrscheinlich auf IP-Basis funktionieren und somit auch unsicher sind, weil die dynamisch zugewiesen IP-Adressen sich providerseitig ständig ändern... Habe jetzt mittlerweile selbst den Übersicht verloren, was da alles gemacht und berücksichtigt werden muss. Letztens ist natürlich die Sicherheit des ganzen eine große Frage. Hat jemand schon so etwas gemacht? Wie würdet Ihr so was realisieren und ob es Sinn macht, damit überhaupt anzufangen? Eure Meinungen und Erfahrungen sind mir jetzt wichtig. Vielen Dank! |
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Was für ein OS benutzt du. Steht vielleicht sogar irgendwo ein Windows2000 oder Windows2003 Domänenkontroller rum...
Ich weiss es nicht 100%, aber ich meine in den Gruppenrichtlinien kannst du so Sachen einstellen... Starte doch mal gpedit.msc und wühle dich durch. Das sollte auf XP Prof. zumindest realisierbar sein. |
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Es läuft sogar Windows Server 2003 Enterprise auf dem Server-Rechner in der Firma, wo das ganze betrieben werden soll. Und eine Activ Directory einzurichten wäre auch kein Problem.
@Jelly: Meinst du jetzt, dass ich die selbst programmierte Anwendung irgendwie in den Domain Controller indegriere oder was? Habe ich nicht ganz vertanden? |
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Ich würd mal kucken, ob das Ganze eben nicht direkt auf Domänencontroller im AD zu lösen ist. An so Sachen würd ich mich mit Delphi nicht rantrauen. Habt Ihr einen Administrator der in den ganzen AD Einstellungen fit ist, dann frag mal den. Ich bin mir fast sicher, dass es irgendwie dort direkt eine Möglichkeit gibt, die Anzahl der Sitzungen pro Benutzer auf eins zu beschränken.
|
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Was Windows angeht, bin ich mir auch ziemlich sicher, dass es so was gibt Die Frage ist, wie kann ich die Login-Funktion eigenes Programms mit der Benutzereinstellungen der Active Directory zusammenspielen lassen? :gruebel:
|
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Speicher statt '1' dir aktuelle Zeit in der Datenbank (am bestem als UNIX-Timestamp). Wenn der Login (oder die letzte Aktivität) länger als 3600 Sekunden (1 Stunde) zurückliegt, sollte das Programm abgestürzt sein. Damit brauchst du kein Active Directory
|
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Du könntest wie Phistev sagte, einfach jede Aktivität überprüfen und wenn keine mehr da ist ausloggen.
Du könntest altlernativ auch einfach den Client alle X Sekunden eine Art "Keep alive"-Signal senden lassen und wenn das ne Zeit lang nicht kommt, ist das Programm tot. Das muss ja im Prinzip nicht oft sein... einmal alle 5 Minuten oder so... Edit: Wobei ich Phistevs Methode eleganter finde, ehrlich gesagt. |
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Zitat:
Was für eine Datenbank nutzt du dann. Wenn du MSSQL einsetzen kannst, da kannst du dir mal die Tabelle sysprocesses aus der Master Datenbank anschauen, da siehst, welcher Login (loginame) gerade in der Datenbank eingeloggt ist. Du siehst sogar, aus welchem Programm (program_name) heraus er sich in der Datenbank eingeloggt hat. Du kannst ja jetzt bei deinem Programm prüfen, ob schon ein Eintrag für den besagten Login besteht. An die Zeit, wann die letzte Datenbankaktivität war kommst du auch über diese Systemtabellen vom SQL Server... Ich denke damit liesse sich was machen, zumal bei Systemabsturz diese Einträge vom SQL Server in regelmässigen Abständen aktualisiert werden. |
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Zitat:
|
Re: Login-Funktion: nur ein Benutzer mit bestimmten Zugangsd
Es war davon die Rede, dass der Client das Keep-Alive-Signal sendet, nicht der Server.
Dafür kann man TCP- oder UDP-Sockets verwenden |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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-2025 by Thomas Breitkreuz