AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Benutzer darf sich nur einmal anmelden
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzer darf sich nur einmal anmelden

Ein Thema von horstmeyer · begonnen am 10. Jun 2022 · letzter Beitrag vom 11. Jun 2022
Antwort Antwort
horstmeyer

Registriert seit: 9. Aug 2021
46 Beiträge
 
#1

Benutzer darf sich nur einmal anmelden

  Alt 10. Jun 2022, 09:08
Hallo Leute,

ich suche nach einer Möglichkeit einen Benutzer so abzufragen, dass er sich nur einmal am Programm anmelden kann, egal von welchem Rechner. Prinzipiell könnte man ja ein Flag in der Datenbank setzen. Das Problem ist nur was mache ich, wenn das Programm abstürzt oder "abgeschossen" wird. Dann bleibt das Flag stehen und das Programm denkt irrtümlich der Nutzer wäre noch angemeldet. Ich dachte das man dies irgendwie über die Oracle-Datenbank abfragt, da die Datenbank eigentlich ständig läuft. Ich bin aber auch für andere Lösungsvorschläge offen. Vielen Dank.

Gruß Horst
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#2

AW: Benutzer darf sich nur einmal anmelden

  Alt 10. Jun 2022, 09:22
Bei Firebird kann man den / die gerade angemeldeten Benutzer über eine Monitortabelle abfragen. Der Server erkennt, wenn der Client nicht mehr da ist. Möglicherweise gib es bei Oracle ähnliche Möglichkeiten.

Sollte das ganze im Netz laufen, kann man das auch über eine Datei auf einer gemeinsamen Freigabe machen. Die Datei wird vom ersten Benutzer exklusiv erstellt.
Kann der zweite usw. die Datei nicht anlegen, weil diese noch offen ist, kann man dann die Meldung anzeigen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Benutzer darf sich nur einmal anmelden

  Alt 10. Jun 2022, 09:40
Zeitstempel ergänzen und die Anwendung aktualisiert den alle x Minuten.
Absturz -> Zeistempel ist veraltet -> Client gestorben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Benutzer darf sich nur einmal anmelden

  Alt 10. Jun 2022, 10:22
Du hast im Programm "eine" DB-Connection.

Da kann man die Datenbank fragen, welche Connections es aktuell gibt, und ist bereits wer mit der selben IP/Name/Sonstwas verbunden, dann die neue Verbindung wieder trennen.
$2B or not $2B
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.211 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Benutzer darf sich nur einmal anmelden

  Alt 10. Jun 2022, 10:44
- Eine tabelle mit Usernamen.
- Meldet sich ein USer an, lösch alle USer aus der Tabelle
- alle x sek tragen sich angemeldete User in der Tabelle neu ein
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Benutzer darf sich nur einmal anmelden

  Alt 11. Jun 2022, 23:28
Es gibt einen view namens v$session, der gefühlt 100 Spalten mit Verbindungsinformationen hat. Wahrscheinlich mittlerweile in aktuellen Oracle Versionen 200 Spalten. U.a. kannst Du dort IP Adresse, client und aufrufendes Programm abfragen. Die Startzeit des letzten SQL, des vorletzten, die Ausführungsdauer,..
Mglw. reicht das schon für eine brauchbare Prüfung, kommt sicher auch drauf an, wie sich das Programm verhält, ob es mit Threads / Multi Session arbeitet usw.

Von Oracle selbst gibt es einen Mechnismus dafür. DCD, wahrscheinlich schlanker gelöst, als man es selbst per Tabelle und Updates machen würde.

Zitat:
" Timer Initiated Disconnect or Dead Connection Detection

Timer initiated disconnect, or dead connection detection enables Net8 to identify connections that have been left hanging by the abnormal termination of a client. This feature minimizes the waste of resources by connections that are no longer valid. It also automatically forces a database rollback of uncommitted transactions and locks held by the user of the broken connection.

On a connection with dead connection detection enabled, a small probe packet is sent from server to client at a user-defined interval (usually several minutes). If the connection is invalid, the send operation generates an error and the server process terminates the connection. "
SQLNET.EXPIRE_TIME

https://docs.oracle.com/cd/A81042_01...pts.htm#997825
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz