Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

1

09.06.2014, 06:16

Login/Online-System

Hallo, ich würde gerne ein System entwickeln, in dem User sich bei der Benutzung eines Programms mit ihrem Account anmelden und sich danach wieder abmelden.
Ich habe (bald) einen Server, leider weiß ich nicht, ob dieser eine Dauerverbindung von vielen Usern aushält.
Daher ein Workaround-Versuch:
Mir ist es wichtig, dass immer nur ein PC gleichzeitig angemeldet sein kann. Dadurch kann kein Account "global" genutzt werden.
Bei der Anmeldung erhält der PC eine GUID, die er speichert und mit dieser kann er sich wieder abmelden.
Ist ein PC angemeldet, scheitern Anmeldungen über den selben Benutzer.
Wenn ein PC sich entscheidet, dauerhaft angemeldet zu sein, dann kann er einen Offline-Modus benutzen, jedoch ist der Account dann dauerhaft als angemeldet gekennzeichnet.

So, nun wenn man das nicht tut, also sich nur zur Benutzung anmeldet, ist die Frage wie er sich wieder abmeldet. Durch Beendung des Programms ist es möglich.
Wenn nun aber dann keine Internetverbindung mehr besteht, scheitert das und der User muss sich von dem PC erst wieder neu anmelden.
Die andere Möglichkeit wäre, regelmäßig eine Verbindung zum Login-Server herzustellen und dem mitzuteilen, dass man noch aktiv ist. Wenn das einige Zeit nicht geschieht, ist die Timeout-Zeit erreicht und der Client wird abgemeldet.
Das erlaubt jedoch einen Offline-Modus zu verwenden, da irgendwann der User abgemeldet wird und man sich an einem anderen PC trotzdem noch einloggen kann. Den User nach erfolgloser Verbindung vom Client aus rauszuwerfen wäre möglich.
Eine weitere Anmeldung würde dann scheitern, falls den Account in zwischenzeit jemand anders schon verwendet.

Was haltet ihr von der Idee, ist sie stabil?
Wenn ich immer Verbindung zum Server herstelle (so jede 20 Sekunden), ist er dann nicht mehr überlastet, als wenn ich sie gleich am Laufen habe? Ich weiß nicht wieviel so eine Verbindung an Server-Leistung zieht.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

09.06.2014, 07:41

Was haltet ihr von der Idee, ist sie stabil?

Was verstehst du unter stabil? Hast du dir ueberlegt was du machst wenn ein Nutzer dein Programm im Offline Modus benutzt, sein PC dann aber abschmiert? Oder gar kaputt geht? Kommt der dann auf nem neuen Rechner nicht mehr in dein Programm rein? Was ist wenn dein Server offline ist oder dein v-server Betreiber probleme hat? Sind dann alle Nutzer ausgesperrt? Was ist wenn der Nutzer den Rechner in Standby schickt? Oder sein Wifi kurz ausfaellt?

Wie willst du verhindern, dass jemand die Verbindung zu deinem Server zu seinem eigenen Dienst umleitet der einfach "du bist angemeldet" antwortet? Ohne geschickte Kryptographie kannst du das kaum verhindern.

Fuer mich klingt das ganze nach sehr viel Frust fuer die Nutzer, und sehr wenig Sicherheit fuer dich.


Wenn ich immer Verbindung zum Server herstelle (so jede 20 Sekunden), ist er dann nicht mehr überlastet, als wenn ich sie gleich am Laufen habe? Ich weiß nicht wieviel so eine Verbindung an Server-Leistung zieht.

Das kommt ganz stark auf die Konfiguration an, ein v-server hat vermutlich eine Beschraenkung auf ein paar hundert aktive Sockets. Es macht nicht viel Sinn eine Verbindung aufrecht zu erhalten wenn du nur alle 20 Sekunden oder so nen ping haben moechtest. Ein Verbindungsaufbau ist in einer solchen Anwendung vernachlaessigbar. Wie viel Server-Leistung dein Dienst braucht wird groesstenteils davon abhaenig sein wie du den Dienst implementierst.

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

3

09.06.2014, 09:21

Wofür soll das gut sein? Ich denke das sich eine andere Lösungs finden lässt, wenn du uns die Problemstellung genauer erläuterst.
Für den Online-Modus würde ich einfach ein keep-alive Paket hin un her schicken. Beim Offline-Modus erst recht keine Verbindung aufbauen. Sonst wäre es ja kein Offline-Modus.

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

4

09.06.2014, 15:20

Ich will, dass ein Benutzer das Programm verwenden kann. Ich habe einen vServer und eine Database mit Usern (Entitätenmodell steht noch nicht, also ist beliebig erweiterbar).
Es soll aber nur ein Benutzer gleichzeitig dieses verwenden können, sodass Account-Sharing nicht funktioniert.
Das Programm funktioniert super ohne Internetverbindung, trotzdem muss ich den Benutzer verifizieren können ,sonst schickt wer seine Version rum und jeder geht offline rein.

Oder gar kaputt geht? Kommt der dann auf nem neuen Rechner nicht mehr in dein Programm rein?


Lässt sich mit Keyübertragung auf einen anderen PC regeln, oder im schlimmsten Fall mit einer Email von dem registrierten Email-Account.

Über eine RSA-Signatur bzw. Zertifikate kann ich überprüfen ob der Server wirklich der Server ist.
Der Offline-Modus ist offline, sobald man ihn aber bei einer Verifizierung verfügbar macht, blockiert der Server bei Anmeldungen mit gleichem Benutzer von anderem PC.
Ist der Offline-Modus nicht erwünscht, also keine dauerhafte Anmeldung vorhanden, kickt der Server die Anmeldung bei einem Timeout einfach raus.

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

5

09.06.2014, 15:36

Es ist nicht möglich offline zu arbeiten und gleichzeitig eine Atomare Ausführung durchzusetzten.
Entweder oder. Aber beides geht nicht. Dies ist dir bereits selber klar, deshalb sehe ich hier nicht wo das Problem liegt bzw. was genau deine Frage ist.

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

6

09.06.2014, 15:51

Wobei mir einfällt, dass ein Offline-Modus gar nicht so sinnvoll ist, da es sich um ein Passwortverwaltungsprogramm handelt.

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

7

10.06.2014, 02:05

Macht schon Sinn. Die meisten Passwörter werden offline gespeichert :D

Werbeanzeige